// 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 static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface PutGroupApiKeyCreateRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
      PutGroupApiKeyCreateRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupApiKeyCreateRequest.newBuilder() to construct.
    private PutGroupApiKeyCreateRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupApiKeyCreateRequest() {
      groupId_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.Builder.class);
    }

    public static final int GROUP_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        groupId_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, groupId_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, groupId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на добавления группе ключа доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyCreateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        groupId_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.groupId_ = groupId_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest.getDefaultInstance()) return this;
        if (!other.getGroupId().isEmpty()) {
          groupId_ = other.groupId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object groupId_ = "";
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupId.
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupId.
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        groupId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupId() {
        groupId_ = getDefaultInstance().getGroupId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        groupId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyCreateRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

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

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
      PutGroupApiKeyCreateResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupApiKeyCreateResponse.newBuilder() to construct.
    private PutGroupApiKeyCreateResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupApiKeyCreateResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.Builder.class);
    }

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

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return Whether the data field is set.
     */
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return The data.
     */
    public java.lang.String getData() {
      java.lang.Object ref = "";
      if (typeCase_ == 1) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (typeCase_ == 1) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Значение ключа доступа ApiKey.
     * # Тип: Guid
     * </pre>
     *
     * <code>string data = 1;</code>
     * @return The bytes for data.
     */
    public com.google.protobuf.ByteString
        getDataBytes() {
      java.lang.Object ref = "";
      if (typeCase_ == 1) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (typeCase_ == 1) {
          type_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, type_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос на добавления группе ключа доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyCreateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            typeCase_ = 1;
            type_ = other.type_;
            onChanged();
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

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

      private int bitField0_;

      /**
       * <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.Object ref = "";
        if (typeCase_ == 1) {
          ref = type_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (typeCase_ == 1) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) 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.Object ref = "";
        if (typeCase_ == 1) {
          ref = type_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (typeCase_ == 1) {
            type_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение ключа доступа ApiKey.
       * # Тип: Guid
       * </pre>
       *
       * <code>string data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyCreateResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyCreateResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
      PutGroupApiKeyDeleteRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupApiKeyDeleteRequest.newBuilder() to construct.
    private PutGroupApiKeyDeleteRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupApiKeyDeleteRequest() {
      groupId_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.Builder.class);
    }

    public static final int GROUP_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        groupId_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, groupId_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, groupId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на удаление ключей доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyDeleteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        groupId_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.groupId_ = groupId_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest.getDefaultInstance()) return this;
        if (!other.getGroupId().isEmpty()) {
          groupId_ = other.groupId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object groupId_ = "";
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupId.
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupId.
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        groupId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupId() {
        groupId_ = getDefaultInstance().getGroupId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        groupId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PutGroupApiKeyDeleteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос на удаление ключей доступа ApiKey
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyDeleteResponse}
   */
  public static final class PutGroupApiKeyDeleteResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
      PutGroupApiKeyDeleteResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupApiKeyDeleteResponse.newBuilder() to construct.
    private PutGroupApiKeyDeleteResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupApiKeyDeleteResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.Builder.class);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос на удаление ключей доступа ApiKey
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupApiKeyDeleteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.getDefaultInstance();
      }

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse(this);
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupApiKeyDeleteResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupApiKeyDeleteResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.Claim)
      ClaimOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Claim.newBuilder() to construct.
    private Claim(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Claim() {
      key_ = "";
      value_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Claim_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Claim_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder.class);
    }

    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * Ключ атрибута
     * </pre>
     *
     * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        key_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object value_ = "";
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        value_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Значение атрибута
     * </pre>
     *
     * <code>string value = 2;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(value_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(value_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.Claim}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.Claim)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Claim_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Claim_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        value_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Claim_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.value_ = value_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance()) return this;
        if (!other.getKey().isEmpty()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getValue().isEmpty()) {
          value_ = other.value_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object key_ = "";
      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ключ атрибута
       * </pre>
       *
       * <code>string key = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение атрибута
       * </pre>
       *
       * <code>string value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        value_ = getDefaultInstance().getValue();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.Claim)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.Claim)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.UserGroup)
      UserGroupOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UserGroup.newBuilder() to construct.
    private UserGroup(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UserGroup() {
      userId_ = "";
      groupId_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_UserGroup_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_UserGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder.class);
    }

    public static final int USER_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = userId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        userId_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = userId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GROUP_ID_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        groupId_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = groupId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, userId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, groupId_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, userId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, groupId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Связка пользователя с группой
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.UserGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.UserGroup)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_UserGroup_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_UserGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        userId_ = "";
        groupId_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_UserGroup_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.userId_ = userId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.groupId_ = groupId_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance()) return this;
        if (!other.getUserId().isEmpty()) {
          userId_ = other.userId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getGroupId().isEmpty()) {
          groupId_ = other.groupId_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object userId_ = "";
      /**
       * <pre>
       * Идентификатор пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userId.
       */
      public java.lang.String getUserId() {
        java.lang.Object ref = userId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <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.
       */
      public com.google.protobuf.ByteString
          getUserIdBytes() {
        java.lang.Object ref = userId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        userId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        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() {
        userId_ = getDefaultInstance().getUserId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        userId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object groupId_ = "";
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupId.
       */
      public java.lang.String getGroupId() {
        java.lang.Object ref = groupId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          groupId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupId.
       */
      public com.google.protobuf.ByteString
          getGroupIdBytes() {
        java.lang.Object ref = groupId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        groupId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupId() {
        groupId_ = getDefaultInstance().getGroupId();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        groupId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.UserGroup)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.UserGroup)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

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

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

    /**
     * <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>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     */
    com.google.protobuf.TimestampOrBuilder getDeletedAtOrBuilder();

    /**
     * <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 value to return.
     * @return The bytes of 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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.Group)
      GroupOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Group.newBuilder() to construct.
    private Group(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Group() {
      id_ = "";
      title_ = "";
      description_ = "";
      claims_ = java.util.Collections.emptyList();
      requirements_ = java.util.Collections.emptyList();
      tags_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Group_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Group_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object id_ = "";
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор группы.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TITLE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = title_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        title_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = title_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        title_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        description_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Описание.
     * # Диапазон: 3..256
     * </pre>
     *
     * <code>string description = 3;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLAIMS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<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>
     */
    @java.lang.Override
    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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getClaimsOrBuilder(
        int index) {
      return claims_.get(index);
    }

    public static final int REQUIREMENTS_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private java.util.List<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>
     */
    @java.lang.Override
    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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getRequirementsOrBuilder(
        int index) {
      return requirements_.get(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>
     * @return Whether the deletedAt field is set.
     */
    @java.lang.Override
    public boolean hasDeletedAt() {
      return deletedAt_ != null;
    }
    /**
     * <pre>
     * Дата удаления группы из использования.
     * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
     * </pre>
     *
     * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
     * @return The deletedAt.
     */
    @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>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getDeletedAtOrBuilder() {
      return deletedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : deletedAt_;
    }

    public static final int TAGS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList tags_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @return A list containing the tags.
     */
    public com.google.protobuf.ProtocolStringList
        getTagsList() {
      return tags_;
    }
    /**
     * <pre>
     * Теги группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 7;</code>
     * @return The count of tags.
     */
    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.
     */
    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.
     */
    public com.google.protobuf.ByteString
        getTagsBytes(int index) {
      return tags_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(title_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, title_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
      }
      for (int i = 0; i < claims_.size(); i++) {
        output.writeMessage(4, claims_.get(i));
      }
      for (int i = 0; i < requirements_.size(); i++) {
        output.writeMessage(5, requirements_.get(i));
      }
      if (deletedAt_ != null) {
        output.writeMessage(6, getDeletedAt());
      }
      for (int i = 0; i < tags_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, tags_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(title_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, title_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
      }
      for (int i = 0; i < claims_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, claims_.get(i));
      }
      for (int i = 0; i < requirements_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, requirements_.get(i));
      }
      if (deletedAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getDeletedAt());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tags_.size(); i++) {
          dataSize += computeStringSizeNoTag(tags_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getId()
          .equals(other.getId())) return false;
      if (!getTitle()
          .equals(other.getTitle())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (!getClaimsList()
          .equals(other.getClaimsList())) return false;
      if (!getRequirementsList()
          .equals(other.getRequirementsList())) return false;
      if (hasDeletedAt() != other.hasDeletedAt()) return false;
      if (hasDeletedAt()) {
        if (!getDeletedAt()
            .equals(other.getDeletedAt())) return false;
      }
      if (!getTagsList()
          .equals(other.getTagsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + TITLE_FIELD_NUMBER;
      hash = (53 * hash) + getTitle().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      if (getClaimsCount() > 0) {
        hash = (37 * hash) + CLAIMS_FIELD_NUMBER;
        hash = (53 * hash) + getClaimsList().hashCode();
      }
      if (getRequirementsCount() > 0) {
        hash = (37 * hash) + REQUIREMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getRequirementsList().hashCode();
      }
      if (hasDeletedAt()) {
        hash = (37 * hash) + DELETED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getDeletedAt().hashCode();
      }
      if (getTagsCount() > 0) {
        hash = (37 * hash) + TAGS_FIELD_NUMBER;
        hash = (53 * hash) + getTagsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Группа атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.Group}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.Group)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Group_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Group_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        title_ = "";
        description_ = "";
        if (claimsBuilder_ == null) {
          claims_ = java.util.Collections.emptyList();
        } else {
          claims_ = null;
          claimsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (requirementsBuilder_ == null) {
          requirements_ = java.util.Collections.emptyList();
        } else {
          requirements_ = null;
          requirementsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        deletedAt_ = null;
        if (deletedAtBuilder_ != null) {
          deletedAtBuilder_.dispose();
          deletedAtBuilder_ = null;
        }
        tags_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_Group_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
      }

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

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

      private void buildPartialRepeatedFields(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group result) {
        if (claimsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            claims_ = java.util.Collections.unmodifiableList(claims_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.claims_ = claims_;
        } else {
          result.claims_ = claimsBuilder_.build();
        }
        if (requirementsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            requirements_ = java.util.Collections.unmodifiableList(requirements_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.requirements_ = requirements_;
        } else {
          result.requirements_ = requirementsBuilder_.build();
        }
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.title_ = title_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.description_ = description_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.deletedAt_ = deletedAtBuilder_ == null
              ? deletedAt_
              : deletedAtBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          tags_.makeImmutable();
          result.tags_ = tags_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getTitle().isEmpty()) {
          title_ = other.title_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (claimsBuilder_ == null) {
          if (!other.claims_.isEmpty()) {
            if (claims_.isEmpty()) {
              claims_ = other.claims_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureClaimsIsMutable();
              claims_.addAll(other.claims_);
            }
            onChanged();
          }
        } else {
          if (!other.claims_.isEmpty()) {
            if (claimsBuilder_.isEmpty()) {
              claimsBuilder_.dispose();
              claimsBuilder_ = null;
              claims_ = other.claims_;
              bitField0_ = (bitField0_ & ~0x00000008);
              claimsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getClaimsFieldBuilder() : null;
            } else {
              claimsBuilder_.addAllMessages(other.claims_);
            }
          }
        }
        if (requirementsBuilder_ == null) {
          if (!other.requirements_.isEmpty()) {
            if (requirements_.isEmpty()) {
              requirements_ = other.requirements_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureRequirementsIsMutable();
              requirements_.addAll(other.requirements_);
            }
            onChanged();
          }
        } else {
          if (!other.requirements_.isEmpty()) {
            if (requirementsBuilder_.isEmpty()) {
              requirementsBuilder_.dispose();
              requirementsBuilder_ = null;
              requirements_ = other.requirements_;
              bitField0_ = (bitField0_ & ~0x00000010);
              requirementsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRequirementsFieldBuilder() : null;
            } else {
              requirementsBuilder_.addAllMessages(other.requirements_);
            }
          }
        }
        if (other.hasDeletedAt()) {
          mergeDeletedAt(other.getDeletedAt());
        }
        if (!other.tags_.isEmpty()) {
          if (tags_.isEmpty()) {
            tags_ = other.tags_;
            bitField0_ |= 0x00000040;
          } else {
            ensureTagsIsMutable();
            tags_.addAll(other.tags_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                id_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                title_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                description_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim m =
                    input.readMessage(
                        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.parser(),
                        extensionRegistry);
                if (claimsBuilder_ == null) {
                  ensureClaimsIsMutable();
                  claims_.add(m);
                } else {
                  claimsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim m =
                    input.readMessage(
                        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.parser(),
                        extensionRegistry);
                if (requirementsBuilder_ == null) {
                  ensureRequirementsIsMutable();
                  requirements_.add(m);
                } else {
                  requirementsBuilder_.addMessage(m);
                }
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getDeletedAtFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureTagsIsMutable();
                tags_.add(s);
                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object title_ = "";
      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The title.
       */
      public java.lang.String getTitle() {
        java.lang.Object ref = title_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          title_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for title.
       */
      public com.google.protobuf.ByteString
          getTitleBytes() {
        java.lang.Object ref = title_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          title_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        title_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Наименование.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearTitle() {
        title_ = getDefaultInstance().getTitle();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        title_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Описание.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string description = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        description_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> claims_ =
        java.util.Collections.emptyList();
      private void ensureClaimsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          claims_ = new java.util.ArrayList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim>(claims_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> claimsBuilder_;

      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getClaimsList() {
        if (claimsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(claims_);
        } else {
          return claimsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public int getClaimsCount() {
        if (claimsBuilder_ == null) {
          return claims_.size();
        } else {
          return claimsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getClaims(int index) {
        if (claimsBuilder_ == null) {
          return claims_.get(index);
        } else {
          return claimsBuilder_.getMessage(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) {
        if (claimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClaimsIsMutable();
          claims_.set(index, value);
          onChanged();
        } else {
          claimsBuilder_.setMessage(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) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.set(index, builderForValue.build());
          onChanged();
        } else {
          claimsBuilder_.setMessage(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) {
        if (claimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClaimsIsMutable();
          claims_.add(value);
          onChanged();
        } else {
          claimsBuilder_.addMessage(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) {
        if (claimsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureClaimsIsMutable();
          claims_.add(index, value);
          onChanged();
        } else {
          claimsBuilder_.addMessage(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) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.add(builderForValue.build());
          onChanged();
        } else {
          claimsBuilder_.addMessage(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) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.add(index, builderForValue.build());
          onChanged();
        } else {
          claimsBuilder_.addMessage(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) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, claims_);
          onChanged();
        } else {
          claimsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder clearClaims() {
        if (claimsBuilder_ == null) {
          claims_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          claimsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public Builder removeClaims(int index) {
        if (claimsBuilder_ == null) {
          ensureClaimsIsMutable();
          claims_.remove(index);
          onChanged();
        } else {
          claimsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder getClaimsBuilder(
          int index) {
        return getClaimsFieldBuilder().getBuilder(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) {
        if (claimsBuilder_ == null) {
          return claims_.get(index);  } else {
          return claimsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <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() {
        if (claimsBuilder_ != null) {
          return claimsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(claims_);
        }
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder addClaimsBuilder() {
        return getClaimsFieldBuilder().addBuilder(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance());
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder addClaimsBuilder(
          int index) {
        return getClaimsFieldBuilder().addBuilder(
            index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance());
      }
      /**
       * <pre>
       * Массив атрибутов группы.
       * Эти атрибуты назначены пользователям, которые принадлежат группе.
       * # Диапазон: 0..100
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim claims = 4;</code>
       */
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder> 
           getClaimsBuilderList() {
        return getClaimsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
          getClaimsFieldBuilder() {
        if (claimsBuilder_ == null) {
          claimsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder>(
                  claims_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          claims_ = null;
        }
        return claimsBuilder_;
      }

      private java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> requirements_ =
        java.util.Collections.emptyList();
      private void ensureRequirementsIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          requirements_ = new java.util.ArrayList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim>(requirements_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> requirementsBuilder_;

      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getRequirementsList() {
        if (requirementsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requirements_);
        } else {
          return requirementsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public int getRequirementsCount() {
        if (requirementsBuilder_ == null) {
          return requirements_.size();
        } else {
          return requirementsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getRequirements(int index) {
        if (requirementsBuilder_ == null) {
          return requirements_.get(index);
        } else {
          return requirementsBuilder_.getMessage(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) {
        if (requirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequirementsIsMutable();
          requirements_.set(index, value);
          onChanged();
        } else {
          requirementsBuilder_.setMessage(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) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.set(index, builderForValue.build());
          onChanged();
        } else {
          requirementsBuilder_.setMessage(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) {
        if (requirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequirementsIsMutable();
          requirements_.add(value);
          onChanged();
        } else {
          requirementsBuilder_.addMessage(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) {
        if (requirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequirementsIsMutable();
          requirements_.add(index, value);
          onChanged();
        } else {
          requirementsBuilder_.addMessage(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) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.add(builderForValue.build());
          onChanged();
        } else {
          requirementsBuilder_.addMessage(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) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.add(index, builderForValue.build());
          onChanged();
        } else {
          requirementsBuilder_.addMessage(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) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requirements_);
          onChanged();
        } else {
          requirementsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder clearRequirements() {
        if (requirementsBuilder_ == null) {
          requirements_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          requirementsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public Builder removeRequirements(int index) {
        if (requirementsBuilder_ == null) {
          ensureRequirementsIsMutable();
          requirements_.remove(index);
          onChanged();
        } else {
          requirementsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder getRequirementsBuilder(
          int index) {
        return getRequirementsFieldBuilder().getBuilder(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) {
        if (requirementsBuilder_ == null) {
          return requirements_.get(index);  } else {
          return requirementsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <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() {
        if (requirementsBuilder_ != null) {
          return requirementsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requirements_);
        }
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder addRequirementsBuilder() {
        return getRequirementsFieldBuilder().addBuilder(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance());
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder addRequirementsBuilder(
          int index) {
        return getRequirementsFieldBuilder().addBuilder(
            index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance());
      }
      /**
       * <pre>
       * Требования, означающие принадлежность пользователя к данной группе.
       * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim requirements = 5;</code>
       */
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder> 
           getRequirementsBuilderList() {
        return getRequirementsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
          getRequirementsFieldBuilder() {
        if (requirementsBuilder_ == null) {
          requirementsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder>(
                  requirements_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          requirements_ = null;
        }
        return requirementsBuilder_;
      }

      private com.google.protobuf.Timestamp deletedAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> deletedAtBuilder_;
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       * @return Whether the deletedAt field is set.
       */
      public boolean hasDeletedAt() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       * @return The deletedAt.
       */
      public com.google.protobuf.Timestamp getDeletedAt() {
        if (deletedAtBuilder_ == null) {
          return deletedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : deletedAt_;
        } else {
          return deletedAtBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder setDeletedAt(com.google.protobuf.Timestamp value) {
        if (deletedAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deletedAt_ = value;
        } else {
          deletedAtBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder setDeletedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (deletedAtBuilder_ == null) {
          deletedAt_ = builderForValue.build();
        } else {
          deletedAtBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder mergeDeletedAt(com.google.protobuf.Timestamp value) {
        if (deletedAtBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            deletedAt_ != null &&
            deletedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getDeletedAtBuilder().mergeFrom(value);
          } else {
            deletedAt_ = value;
          }
        } else {
          deletedAtBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public Builder clearDeletedAt() {
        bitField0_ = (bitField0_ & ~0x00000020);
        deletedAt_ = null;
        if (deletedAtBuilder_ != null) {
          deletedAtBuilder_.dispose();
          deletedAtBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public com.google.protobuf.Timestamp.Builder getDeletedAtBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getDeletedAtFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getDeletedAtOrBuilder() {
        if (deletedAtBuilder_ != null) {
          return deletedAtBuilder_.getMessageOrBuilder();
        } else {
          return deletedAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : deletedAt_;
        }
      }
      /**
       * <pre>
       * Дата удаления группы из использования.
       * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
       * </pre>
       *
       * <code>.google.protobuf.Timestamp deleted_at = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getDeletedAtFieldBuilder() {
        if (deletedAtBuilder_ == null) {
          deletedAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getDeletedAt(),
                  getParentForChildren(),
                  isClean());
          deletedAt_ = null;
        }
        return deletedAtBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList tags_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureTagsIsMutable() {
        if (!tags_.isModifiable()) {
          tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
        }
        bitField0_ |= 0x00000040;
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @return A list containing the tags.
       */
      public com.google.protobuf.ProtocolStringList
          getTagsList() {
        tags_.makeImmutable();
        return tags_;
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @return The count of tags.
       */
      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.
       */
      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.
       */
      public com.google.protobuf.ByteString
          getTagsBytes(int index) {
        return tags_.getByteString(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) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagsIsMutable();
        tags_.set(index, value);
        bitField0_ |= 0x00000040;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagsIsMutable();
        tags_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        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) {
        ensureTagsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tags_);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Теги группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTags() {
        tags_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureTagsIsMutable();
        tags_.add(value);
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.Group)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.Group)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupRequest)
      GetGroupRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupRequest.newBuilder() to construct.
    private GetGroupRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupRequest() {
      id_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос получения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.Group data = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder();

    /**
     * <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();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.ErrorOrBuilder getErrorOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupResponse)
      GetGroupResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupResponse.newBuilder() to construct.
    private GetGroupResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Builder.class);
    }

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

      /**
       * <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.ValidationError validation = 1;</code>
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      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.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.Builder.class);
      }

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

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

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

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @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>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

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

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

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

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

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

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

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

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

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

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.getDefaultInstance();
        }

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

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

        private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error other) {
          if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

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

        private int bitField0_;

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

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


        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupResponse.Error)
      }

      // @@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 {
        DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error();
      }

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

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

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

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

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

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupResponse.Error error = 2;</code>
     * @return The error.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос получения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse result) {
        int from_bitField0_ = bitField0_;
      }

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

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

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

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

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

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

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GroupFilter filter = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilterOrBuilder getFilterOrBuilder();

    /**
     * <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();
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder getPagingOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupListRequest)
      GetGroupListRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupListRequest.newBuilder() to construct.
    private GetGroupListRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupListRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.Builder.class);
    }

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

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

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

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     * @return The filter.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance() : filter_;
    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
     * @return The paging.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder getPagingOrBuilder() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging) pagination_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос получения списка групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupListRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest.getDefaultInstance();
      }

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

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

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

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

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

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

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

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

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

      private int bitField0_;

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

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder> pagingBuilder_;
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       * @return Whether the paging field is set.
       */
      @java.lang.Override
      public boolean hasPaging() {
        return paginationCase_ == 2;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       * @return The paging.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging getPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging) pagination_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.getDefaultInstance();
        } else {
          if (paginationCase_ == 2) {
            return pagingBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging value) {
        if (pagingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pagination_ = value;
          onChanged();
        } else {
          pagingBuilder_.setMessage(value);
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder builderForValue) {
        if (pagingBuilder_ == null) {
          pagination_ = builderForValue.build();
          onChanged();
        } else {
          pagingBuilder_.setMessage(builderForValue.build());
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging value) {
        if (pagingBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (paginationCase_ == 2) {
            pagingBuilder_.mergeFrom(value);
          } else {
            pagingBuilder_.setMessage(value);
          }
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public Builder clearPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
            onChanged();
          }
        } else {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
          }
          pagingBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder getPagingBuilder() {
        return getPagingFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder getPagingOrBuilder() {
        if ((paginationCase_ == 2) && (pagingBuilder_ != null)) {
          return pagingBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder> 
          getPagingFieldBuilder() {
        if (pagingBuilder_ == null) {
          if (!(paginationCase_ == 2)) {
            pagination_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.getDefaultInstance();
          }
          pagingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging) pagination_,
                  getParentForChildren(),
                  isClean());
          pagination_ = null;
        }
        paginationCase_ = 2;
        onChanged();
        return pagingBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupListRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupListRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.Group data = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder();

    /**
     * <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();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.ErrorOrBuilder getErrorOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupListResponse)
      GetGroupListResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupListResponse.newBuilder() to construct.
    private GetGroupListResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupListResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Builder.class);
    }

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

      /**
       * <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.ValidationError validation = 1;</code>
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      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.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupListResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.Builder.class);
      }

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

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

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

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @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>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

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

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

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

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

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

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

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

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

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

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.getDefaultInstance();
        }

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

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

        private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error other) {
          if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

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

        private int bitField0_;

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

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


        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupListResponse.Error)
      }

      // @@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 {
        DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error();
      }

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

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

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

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

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

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupListResponse.Error error = 2;</code>
     * @return The error.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос получения списка групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupListResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupListResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse result) {
        int from_bitField0_ = bitField0_;
      }

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

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

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

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

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

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

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupListResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupListResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupListResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GroupFilter filter = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilterOrBuilder getFilterOrBuilder();
  }
  /**
   * <pre>
   * Запрос получения количества групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupCountRequest}
   */
  public static final class GetGroupCountRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupCountRequest)
      GetGroupCountRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupCountRequest.newBuilder() to construct.
    private GetGroupCountRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupCountRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.Builder.class);
    }

    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>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupFilter filter = 1;</code>
     * @return The filter.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance() : filter_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.getDefaultInstance();
      }

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

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

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

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest.getDefaultInstance()) return this;
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupCountRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupCountRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <pre>
     * Всего групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Всего групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    int getData();

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.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();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.ErrorOrBuilder getErrorOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupCountResponse)
      GetGroupCountResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupCountResponse.newBuilder() to construct.
    private GetGroupCountResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupCountResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Builder.class);
    }

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

      /**
       * <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.ValidationError validation = 1;</code>
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      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.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupCountResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.Builder.class);
      }

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

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

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

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @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>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

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

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

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

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

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

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

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

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

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

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.getDefaultInstance();
        }

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

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

        private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error other) {
          if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

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

        private int bitField0_;

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

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


        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupCountResponse.Error)
      }

      // @@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 {
        DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error();
      }

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

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

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

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

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

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Всего групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Всего групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public int getData() {
      if (typeCase_ == 1) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupCountResponse.Error error = 2;</code>
     * @return The error.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) type_));
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос получения количества групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupCountResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupCountResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 2 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

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

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

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

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

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

      private int bitField0_;

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

        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Всего групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupCountResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupCountResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupCountResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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 value to return.
     * @return The bytes of 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>
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     * </pre>
     *
     * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     */
    com.google.protobuf.BoolValueOrBuilder getHideDeletedOrBuilder();
  }
  /**
   * <pre>
   * Фильтр групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GroupFilter}
   */
  public static final class GroupFilter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupFilter)
      GroupFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupFilter.newBuilder() to construct.
    private GroupFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupFilter() {
      text_ = "";
      tags_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupFilter_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 2:
          return internalGetRequirements();
        case 3:
          return internalGetClaims();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.Builder.class);
    }

    public static final int TEXT_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object text_ = "";
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @return The text.
     */
    @java.lang.Override
    public java.lang.String getText() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        text_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     * </pre>
     *
     * <code>string text = 1;</code>
     * @return The bytes for text.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTextBytes() {
      java.lang.Object ref = text_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        text_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUIREMENTS_FIELD_NUMBER = 2;
    private static final class RequirementsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupFilter_RequirementsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> requirements_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetRequirements() {
      if (requirements_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            RequirementsDefaultEntryHolder.defaultEntry);
      }
      return requirements_;
    }
    public int getRequirementsCount() {
      return internalGetRequirements().getMap().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) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetRequirements().getMap().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 internalGetRequirements().getMap();
    }
    /**
     * <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) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetRequirements().getMap();
      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) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetRequirements().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int CLAIMS_FIELD_NUMBER = 3;
    private static final class ClaimsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupFilter_ClaimsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> claims_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetClaims() {
      if (claims_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ClaimsDefaultEntryHolder.defaultEntry);
      }
      return claims_;
    }
    public int getClaimsCount() {
      return internalGetClaims().getMap().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) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetClaims().getMap().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 internalGetClaims().getMap();
    }
    /**
     * <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) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims().getMap();
      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) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int TAGS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList tags_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @return A list containing the tags.
     */
    public com.google.protobuf.ProtocolStringList
        getTagsList() {
      return tags_;
    }
    /**
     * <pre>
     * По тегам.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated string tags = 4;</code>
     * @return The count of tags.
     */
    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.
     */
    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.
     */
    public com.google.protobuf.ByteString
        getTagsBytes(int index) {
      return tags_.getByteString(index);
    }

    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>
     * @return Whether the hideDeleted field is set.
     */
    @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>
     * @return The hideDeleted.
     */
    @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>
     */
    @java.lang.Override
    public com.google.protobuf.BoolValueOrBuilder getHideDeletedOrBuilder() {
      return hideDeleted_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : hideDeleted_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, text_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetRequirements(),
          RequirementsDefaultEntryHolder.defaultEntry,
          2);
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetClaims(),
          ClaimsDefaultEntryHolder.defaultEntry,
          3);
      for (int i = 0; i < tags_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, tags_.getRaw(i));
      }
      if (hideDeleted_ != null) {
        output.writeMessage(5, getHideDeleted());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(text_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, text_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetRequirements().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        requirements__ = RequirementsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, requirements__);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetClaims().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        claims__ = ClaimsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, claims__);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tags_.size(); i++) {
          dataSize += computeStringSizeNoTag(tags_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagsList().size();
      }
      if (hideDeleted_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getHideDeleted());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getText()
          .equals(other.getText())) return false;
      if (!internalGetRequirements().equals(
          other.internalGetRequirements())) return false;
      if (!internalGetClaims().equals(
          other.internalGetClaims())) return false;
      if (!getTagsList()
          .equals(other.getTagsList())) return false;
      if (hasHideDeleted() != other.hasHideDeleted()) return false;
      if (hasHideDeleted()) {
        if (!getHideDeleted()
            .equals(other.getHideDeleted())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getText().hashCode();
      if (!internalGetRequirements().getMap().isEmpty()) {
        hash = (37 * hash) + REQUIREMENTS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetRequirements().hashCode();
      }
      if (!internalGetClaims().getMap().isEmpty()) {
        hash = (37 * hash) + CLAIMS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetClaims().hashCode();
      }
      if (getTagsCount() > 0) {
        hash = (37 * hash) + TAGS_FIELD_NUMBER;
        hash = (53 * hash) + getTagsList().hashCode();
      }
      if (hasHideDeleted()) {
        hash = (37 * hash) + HIDE_DELETED_FIELD_NUMBER;
        hash = (53 * hash) + getHideDeleted().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Фильтр групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupFilter)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupFilter_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetRequirements();
          case 3:
            return internalGetClaims();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableRequirements();
          case 3:
            return internalGetMutableClaims();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        text_ = "";
        internalGetMutableRequirements().clear();
        internalGetMutableClaims().clear();
        tags_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        hideDeleted_ = null;
        if (hideDeletedBuilder_ != null) {
          hideDeletedBuilder_.dispose();
          hideDeletedBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupFilter_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.text_ = text_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.requirements_ = internalGetRequirements();
          result.requirements_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.claims_ = internalGetClaims();
          result.claims_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          tags_.makeImmutable();
          result.tags_ = tags_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.hideDeleted_ = hideDeletedBuilder_ == null
              ? hideDeleted_
              : hideDeletedBuilder_.build();
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter.getDefaultInstance()) return this;
        if (!other.getText().isEmpty()) {
          text_ = other.text_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        internalGetMutableRequirements().mergeFrom(
            other.internalGetRequirements());
        bitField0_ |= 0x00000002;
        internalGetMutableClaims().mergeFrom(
            other.internalGetClaims());
        bitField0_ |= 0x00000004;
        if (!other.tags_.isEmpty()) {
          if (tags_.isEmpty()) {
            tags_ = other.tags_;
            bitField0_ |= 0x00000008;
          } else {
            ensureTagsIsMutable();
            tags_.addAll(other.tags_);
          }
          onChanged();
        }
        if (other.hasHideDeleted()) {
          mergeHideDeleted(other.getHideDeleted());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                text_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                requirements__ = input.readMessage(
                    RequirementsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableRequirements().getMutableMap().put(
                    requirements__.getKey(), requirements__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                claims__ = input.readMessage(
                    ClaimsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableClaims().getMutableMap().put(
                    claims__.getKey(), claims__.getValue());
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureTagsIsMutable();
                tags_.add(s);
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getHideDeletedFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object text_ = "";
      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @return The text.
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          text_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @return The bytes for text.
       */
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        text_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По тексту.
       * Если значение не передано то поиск по нему не производится.
       * # Диапазон: 3..64.
       * # Поиск производится по полям:
       * # - Наименование
       * </pre>
       *
       * <code>string text = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearText() {
        text_ = getDefaultInstance().getText();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        text_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> requirements_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetRequirements() {
        if (requirements_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              RequirementsDefaultEntryHolder.defaultEntry);
        }
        return requirements_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableRequirements() {
        if (requirements_ == null) {
          requirements_ = com.google.protobuf.MapField.newMapField(
              RequirementsDefaultEntryHolder.defaultEntry);
        }
        if (!requirements_.isMutable()) {
          requirements_ = requirements_.copy();
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return requirements_;
      }
      public int getRequirementsCount() {
        return internalGetRequirements().getMap().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) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetRequirements().getMap().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 internalGetRequirements().getMap();
      }
      /**
       * <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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetRequirements().getMap();
        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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetRequirements().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearRequirements() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableRequirements().getMutableMap()
            .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) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableRequirements().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableRequirements() {
        bitField0_ |= 0x00000002;
        return internalGetMutableRequirements().getMutableMap();
      }
      /**
       * <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) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableRequirements().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        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) {
        internalGetMutableRequirements().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> claims_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetClaims() {
        if (claims_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ClaimsDefaultEntryHolder.defaultEntry);
        }
        return claims_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableClaims() {
        if (claims_ == null) {
          claims_ = com.google.protobuf.MapField.newMapField(
              ClaimsDefaultEntryHolder.defaultEntry);
        }
        if (!claims_.isMutable()) {
          claims_ = claims_.copy();
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return claims_;
      }
      public int getClaimsCount() {
        return internalGetClaims().getMap().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) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetClaims().getMap().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 internalGetClaims().getMap();
      }
      /**
       * <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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims().getMap();
        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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearClaims() {
        bitField0_ = (bitField0_ & ~0x00000004);
        internalGetMutableClaims().getMutableMap()
            .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) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableClaims().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableClaims() {
        bitField0_ |= 0x00000004;
        return internalGetMutableClaims().getMutableMap();
      }
      /**
       * <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) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableClaims().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000004;
        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) {
        internalGetMutableClaims().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000004;
        return this;
      }

      private com.google.protobuf.LazyStringArrayList tags_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureTagsIsMutable() {
        if (!tags_.isModifiable()) {
          tags_ = new com.google.protobuf.LazyStringArrayList(tags_);
        }
        bitField0_ |= 0x00000008;
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @return A list containing the tags.
       */
      public com.google.protobuf.ProtocolStringList
          getTagsList() {
        tags_.makeImmutable();
        return tags_;
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @return The count of tags.
       */
      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.
       */
      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.
       */
      public com.google.protobuf.ByteString
          getTagsBytes(int index) {
        return tags_.getByteString(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) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagsIsMutable();
        tags_.set(index, value);
        bitField0_ |= 0x00000008;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagsIsMutable();
        tags_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        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) {
        ensureTagsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tags_);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По тегам.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated string tags = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTags() {
        tags_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureTagsIsMutable();
        tags_.add(value);
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private com.google.protobuf.BoolValue hideDeleted_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> hideDeletedBuilder_;
      /**
       * <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.
       */
      public boolean hasHideDeleted() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       * @return The hideDeleted.
       */
      public com.google.protobuf.BoolValue getHideDeleted() {
        if (hideDeletedBuilder_ == null) {
          return hideDeleted_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : hideDeleted_;
        } else {
          return hideDeletedBuilder_.getMessage();
        }
      }
      /**
       * <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) {
        if (hideDeletedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          hideDeleted_ = value;
        } else {
          hideDeletedBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        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) {
        if (hideDeletedBuilder_ == null) {
          hideDeleted_ = builderForValue.build();
        } else {
          hideDeletedBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        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) {
        if (hideDeletedBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            hideDeleted_ != null &&
            hideDeleted_ != com.google.protobuf.BoolValue.getDefaultInstance()) {
            getHideDeletedBuilder().mergeFrom(value);
          } else {
            hideDeleted_ = value;
          }
        } else {
          hideDeletedBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      public Builder clearHideDeleted() {
        bitField0_ = (bitField0_ & ~0x00000010);
        hideDeleted_ = null;
        if (hideDeletedBuilder_ != null) {
          hideDeletedBuilder_.dispose();
          hideDeletedBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      public com.google.protobuf.BoolValue.Builder getHideDeletedBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getHideDeletedFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Скрывать удалённые элементы.
       * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at &gt; текущего времени.
       * Если значение — false или не задано, возвращаются все записи, включая удалённые
       * </pre>
       *
       * <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
       */
      public com.google.protobuf.BoolValueOrBuilder getHideDeletedOrBuilder() {
        if (hideDeletedBuilder_ != null) {
          return hideDeletedBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> 
          getHideDeletedFieldBuilder() {
        if (hideDeletedBuilder_ == null) {
          hideDeletedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder>(
                  getHideDeleted(),
                  getParentForChildren(),
                  isClean());
          hideDeleted_ = null;
        }
        return hideDeletedBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupFilter)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupFilter)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupPaging)
      GroupPagingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupPaging.newBuilder() to construct.
    private GroupPaging(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupPaging() {
      orderByType_ = 0;
      directionType_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupPaging_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupPaging_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder.class);
    }

    /**
     * <pre>
     * Справочник типов значений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupPaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      ORDER_BY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * По идентификатору
       * </pre>
       *
       * <code>ID = 1;</code>
       */
      ID(1),
      /**
       * <pre>
       * По наименованию
       * </pre>
       *
       * <code>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;


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

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

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return ID;
          case 2: return 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>() {
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

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

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

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

      private final int value;

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

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

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

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


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

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

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

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

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

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

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

      private final int value;

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

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

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_ = 0;
    /**
     * <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;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_ = 0;
    /**
     * <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;
    }

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

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

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Пагинация групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupPaging)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPagingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupPaging_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupPaging_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupPaging_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.getDefaultInstance();
      }

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

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

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

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

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

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

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

      private int orderByType_ = 0;
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.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>
       * @param value The enum numeric value on the wire for orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        orderByType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.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 orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging.OrderByType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        orderByType_ = value.getNumber();
        onChanged();
        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() {
        bitField0_ = (bitField0_ & ~0x00000001);
        orderByType_ = 0;
        onChanged();
        return this;
      }

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

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

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

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

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

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


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

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupPaging)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupPaging getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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>
     *
     * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder();
  }
  /**
   * <pre>
   * Запрос сохранения группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PostGroupRequest}
   */
  public static final class PostGroupRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupRequest)
      PostGroupRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostGroupRequest.newBuilder() to construct.
    private PostGroupRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostGroupRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.Builder.class);
    }

    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>
     * @return Whether the data field is set.
     */
    @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>
     * @return The data.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
      return data_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance() : data_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос сохранения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest.getDefaultInstance();
      }

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

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

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

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

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

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

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

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The data.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <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) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
        } else {
          dataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (dataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            data_ != null &&
            data_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance()) {
            getDataBuilder().mergeFrom(value);
          } else {
            data_ = value;
          }
        } else {
          dataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000001);
        data_ = null;
        if (dataBuilder_ != null) {
          dataBuilder_.dispose();
          dataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder getDataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    java.util.List<? extends ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
        getGroupRequirementsOrBuilderList();
    /**
     * <pre>
     * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
     * # Диапазон: 0..10
     * </pre>
     *
     * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getGroupRequirementsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Запрос создания группы по шаблону
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateRequest}
   */
  public static final class PostGroupByTemplateRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupByTemplateRequest)
      PostGroupByTemplateRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostGroupByTemplateRequest.newBuilder() to construct.
    private PostGroupByTemplateRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostGroupByTemplateRequest() {
      groupTemplateId_ = "";
      groupTitle_ = "";
      groupRequirements_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.Builder.class);
    }

    public static final int GROUP_TEMPLATE_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = groupTemplateId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        groupTemplateId_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = groupTemplateId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupTemplateId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GROUP_TITLE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = groupTitle_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        groupTitle_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = groupTitle_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupTitle_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GROUP_REQUIREMENTS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<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>
     */
    @java.lang.Override
    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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getGroupRequirementsOrBuilder(
        int index) {
      return groupRequirements_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupTemplateId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, groupTemplateId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupTitle_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, groupTitle_);
      }
      for (int i = 0; i < groupRequirements_.size(); i++) {
        output.writeMessage(3, groupRequirements_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupTemplateId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, groupTemplateId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupTitle_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, groupTitle_);
      }
      for (int i = 0; i < groupRequirements_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, groupRequirements_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + GROUP_TEMPLATE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getGroupTemplateId().hashCode();
      hash = (37 * hash) + GROUP_TITLE_FIELD_NUMBER;
      hash = (53 * hash) + getGroupTitle().hashCode();
      if (getGroupRequirementsCount() > 0) {
        hash = (37 * hash) + GROUP_REQUIREMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getGroupRequirementsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос создания группы по шаблону
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupByTemplateRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        groupTemplateId_ = "";
        groupTitle_ = "";
        if (groupRequirementsBuilder_ == null) {
          groupRequirements_ = java.util.Collections.emptyList();
        } else {
          groupRequirements_ = null;
          groupRequirementsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.getDefaultInstance();
      }

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

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

      private void buildPartialRepeatedFields(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest result) {
        if (groupRequirementsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            groupRequirements_ = java.util.Collections.unmodifiableList(groupRequirements_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.groupRequirements_ = groupRequirements_;
        } else {
          result.groupRequirements_ = groupRequirementsBuilder_.build();
        }
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.groupTemplateId_ = groupTemplateId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.groupTitle_ = groupTitle_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest.getDefaultInstance()) return this;
        if (!other.getGroupTemplateId().isEmpty()) {
          groupTemplateId_ = other.groupTemplateId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getGroupTitle().isEmpty()) {
          groupTitle_ = other.groupTitle_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (groupRequirementsBuilder_ == null) {
          if (!other.groupRequirements_.isEmpty()) {
            if (groupRequirements_.isEmpty()) {
              groupRequirements_ = other.groupRequirements_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureGroupRequirementsIsMutable();
              groupRequirements_.addAll(other.groupRequirements_);
            }
            onChanged();
          }
        } else {
          if (!other.groupRequirements_.isEmpty()) {
            if (groupRequirementsBuilder_.isEmpty()) {
              groupRequirementsBuilder_.dispose();
              groupRequirementsBuilder_ = null;
              groupRequirements_ = other.groupRequirements_;
              bitField0_ = (bitField0_ & ~0x00000004);
              groupRequirementsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getGroupRequirementsFieldBuilder() : null;
            } else {
              groupRequirementsBuilder_.addAllMessages(other.groupRequirements_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                groupTemplateId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                groupTitle_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim m =
                    input.readMessage(
                        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.parser(),
                        extensionRegistry);
                if (groupRequirementsBuilder_ == null) {
                  ensureGroupRequirementsIsMutable();
                  groupRequirements_.add(m);
                } else {
                  groupRequirementsBuilder_.addMessage(m);
                }
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object groupTemplateId_ = "";
      /**
       * <pre>
       * Идентификатор шаблона группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupTemplateId.
       */
      public java.lang.String getGroupTemplateId() {
        java.lang.Object ref = groupTemplateId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          groupTemplateId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор шаблона группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupTemplateId.
       */
      public com.google.protobuf.ByteString
          getGroupTemplateIdBytes() {
        java.lang.Object ref = groupTemplateId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupTemplateId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        groupTemplateId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        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() {
        groupTemplateId_ = getDefaultInstance().getGroupTemplateId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        groupTemplateId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object groupTitle_ = "";
      /**
       * <pre>
       * Наименование создаваемой по шаблону группы.
       * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupTitle.
       */
      public java.lang.String getGroupTitle() {
        java.lang.Object ref = groupTitle_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          groupTitle_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Наименование создаваемой по шаблону группы.
       * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
       * # Диапазон: 3..256
       * </pre>
       *
       * <code>string group_title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupTitle.
       */
      public com.google.protobuf.ByteString
          getGroupTitleBytes() {
        java.lang.Object ref = groupTitle_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupTitle_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        groupTitle_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        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() {
        groupTitle_ = getDefaultInstance().getGroupTitle();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        groupTitle_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> groupRequirements_ =
        java.util.Collections.emptyList();
      private void ensureGroupRequirementsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          groupRequirements_ = new java.util.ArrayList<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim>(groupRequirements_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> groupRequirementsBuilder_;

      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim> getGroupRequirementsList() {
        if (groupRequirementsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(groupRequirements_);
        } else {
          return groupRequirementsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public int getGroupRequirementsCount() {
        if (groupRequirementsBuilder_ == null) {
          return groupRequirements_.size();
        } else {
          return groupRequirementsBuilder_.getCount();
        }
      }
      /**
       * <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.Claim getGroupRequirements(int index) {
        if (groupRequirementsBuilder_ == null) {
          return groupRequirements_.get(index);
        } else {
          return groupRequirementsBuilder_.getMessage(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) {
        if (groupRequirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupRequirementsIsMutable();
          groupRequirements_.set(index, value);
          onChanged();
        } else {
          groupRequirementsBuilder_.setMessage(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) {
        if (groupRequirementsBuilder_ == null) {
          ensureGroupRequirementsIsMutable();
          groupRequirements_.set(index, builderForValue.build());
          onChanged();
        } else {
          groupRequirementsBuilder_.setMessage(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) {
        if (groupRequirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupRequirementsIsMutable();
          groupRequirements_.add(value);
          onChanged();
        } else {
          groupRequirementsBuilder_.addMessage(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) {
        if (groupRequirementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupRequirementsIsMutable();
          groupRequirements_.add(index, value);
          onChanged();
        } else {
          groupRequirementsBuilder_.addMessage(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) {
        if (groupRequirementsBuilder_ == null) {
          ensureGroupRequirementsIsMutable();
          groupRequirements_.add(builderForValue.build());
          onChanged();
        } else {
          groupRequirementsBuilder_.addMessage(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) {
        if (groupRequirementsBuilder_ == null) {
          ensureGroupRequirementsIsMutable();
          groupRequirements_.add(index, builderForValue.build());
          onChanged();
        } else {
          groupRequirementsBuilder_.addMessage(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) {
        if (groupRequirementsBuilder_ == null) {
          ensureGroupRequirementsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, groupRequirements_);
          onChanged();
        } else {
          groupRequirementsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public Builder clearGroupRequirements() {
        if (groupRequirementsBuilder_ == null) {
          groupRequirements_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          groupRequirementsBuilder_.clear();
        }
        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) {
        if (groupRequirementsBuilder_ == null) {
          ensureGroupRequirementsIsMutable();
          groupRequirements_.remove(index);
          onChanged();
        } else {
          groupRequirementsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <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.Claim.Builder getGroupRequirementsBuilder(
          int index) {
        return getGroupRequirementsFieldBuilder().getBuilder(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) {
        if (groupRequirementsBuilder_ == null) {
          return groupRequirements_.get(index);  } else {
          return groupRequirementsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <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() {
        if (groupRequirementsBuilder_ != null) {
          return groupRequirementsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(groupRequirements_);
        }
      }
      /**
       * <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.Claim.Builder addGroupRequirementsBuilder() {
        return getGroupRequirementsFieldBuilder().addBuilder(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance());
      }
      /**
       * <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.Claim.Builder addGroupRequirementsBuilder(
          int index) {
        return getGroupRequirementsFieldBuilder().addBuilder(
            index, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance());
      }
      /**
       * <pre>
       * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
       * # Диапазон: 0..10
       * </pre>
       *
       * <code>repeated .keyapis.access_management.v1.Claim group_requirements = 3;</code>
       */
      public java.util.List<ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder> 
           getGroupRequirementsBuilderList() {
        return getGroupRequirementsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
          getGroupRequirementsFieldBuilder() {
        if (groupRequirementsBuilder_ == null) {
          groupRequirementsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder>(
                  groupRequirements_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          groupRequirements_ = null;
        }
        return groupRequirementsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupByTemplateRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupByTemplateRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.Group data = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder();

    /**
     * <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();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.ErrorOrBuilder getErrorOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupResponse)
      PostGroupResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostGroupResponse.newBuilder() to construct.
    private PostGroupResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostGroupResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Builder.class);
    }

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

      /**
       * <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.ValidationError validation = 1;</code>
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      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.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.Builder.class);
      }

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

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

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

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @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>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

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

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

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

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

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

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

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

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

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

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.getDefaultInstance();
        }

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

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

        private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error other) {
          if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

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

        private int bitField0_;

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

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


        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupResponse.Error)
      }

      // @@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 {
        DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error();
      }

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

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

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

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

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

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupResponse.Error error = 2;</code>
     * @return The error.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос сохранения группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse result) {
        int from_bitField0_ = bitField0_;
      }

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

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

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

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

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

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

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.Group data = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder();

    /**
     * <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();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.ErrorOrBuilder getErrorOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupByTemplateResponse)
      PostGroupByTemplateResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostGroupByTemplateResponse.newBuilder() to construct.
    private PostGroupByTemplateResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostGroupByTemplateResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Builder.class);
    }

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

      /**
       * <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.ValidationError validation = 1;</code>
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      /**
       * <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();
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundErrorOrBuilder getGroupTemplateNotFoundErrorOrBuilder();

      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.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PostGroupByTemplateResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.Builder.class);
      }

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

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

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

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @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>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }

      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>
       * @return Whether the groupTemplateNotFoundError field is set.
       */
      @java.lang.Override
      public boolean hasGroupTemplateNotFoundError() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Шаблон не найден
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
       * @return The groupTemplateNotFoundError.
       */
      @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>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundErrorOrBuilder getGroupTemplateNotFoundErrorOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) reason_;
        }
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

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

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

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

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

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

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

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

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

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.getDefaultInstance();
        }

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

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

        private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              groupTemplateNotFoundErrorBuilder_ != null) {
            result.reason_ = groupTemplateNotFoundErrorBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error other) {
          if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              break;
            }
            case GROUP_TEMPLATE_NOT_FOUND_ERROR: {
              mergeGroupTemplateNotFoundError(other.getGroupTemplateNotFoundError());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

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

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            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;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_management.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 1) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            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 com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return validationBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundErrorOrBuilder> groupTemplateNotFoundErrorBuilder_;
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         * @return Whether the groupTemplateNotFoundError field is set.
         */
        @java.lang.Override
        public boolean hasGroupTemplateNotFoundError() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         * @return The groupTemplateNotFoundError.
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getGroupTemplateNotFoundError() {
          if (groupTemplateNotFoundErrorBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) reason_;
            }
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return groupTemplateNotFoundErrorBuilder_.getMessage();
            }
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance();
          }
        }
        /**
         * <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) {
          if (groupTemplateNotFoundErrorBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            groupTemplateNotFoundErrorBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          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) {
          if (groupTemplateNotFoundErrorBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            groupTemplateNotFoundErrorBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          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) {
          if (groupTemplateNotFoundErrorBuilder_ == null) {
            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;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              groupTemplateNotFoundErrorBuilder_.mergeFrom(value);
            } else {
              groupTemplateNotFoundErrorBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        public Builder clearGroupTemplateNotFoundError() {
          if (groupTemplateNotFoundErrorBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            groupTemplateNotFoundErrorBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Шаблон не найден
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GroupTemplateNotFoundError group_template_not_found_error = 2;</code>
         */
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.Builder getGroupTemplateNotFoundErrorBuilder() {
          return getGroupTemplateNotFoundErrorFieldBuilder().getBuilder();
        }
        /**
         * <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.GroupTemplateNotFoundErrorOrBuilder getGroupTemplateNotFoundErrorOrBuilder() {
          if ((reasonCase_ == 2) && (groupTemplateNotFoundErrorBuilder_ != null)) {
            return groupTemplateNotFoundErrorBuilder_.getMessageOrBuilder();
          } else {
            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 com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundErrorOrBuilder> 
            getGroupTemplateNotFoundErrorFieldBuilder() {
          if (groupTemplateNotFoundErrorBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance();
            }
            groupTemplateNotFoundErrorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundErrorOrBuilder>(
                    (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return groupTemplateNotFoundErrorBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupByTemplateResponse.Error)
      }

      // @@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 {
        DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error();
      }

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

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

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

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

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

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Группа
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Group data = 1;</code>
     * @return The data.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.PostGroupByTemplateResponse.Error error = 2;</code>
     * @return The error.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос создания группы по шаблону
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PostGroupByTemplateResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PostGroupByTemplateResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse result) {
        int from_bitField0_ = bitField0_;
      }

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

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

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

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

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

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

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group value) {
        if (dataBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Группа
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Group data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Group) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PostGroupByTemplateResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PostGroupByTemplateResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PostGroupByTemplateResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.DeleteGroupRequest)
      DeleteGroupRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeleteGroupRequest.newBuilder() to construct.
    private DeleteGroupRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeleteGroupRequest() {
      id_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос удаления группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.DeleteGroupRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.DeleteGroupRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор группы.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.DeleteGroupRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.DeleteGroupRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeleteGroupResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.DeleteGroupResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос удаления группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.DeleteGroupResponse}
   */
  public static final class DeleteGroupResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.DeleteGroupResponse)
      DeleteGroupResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeleteGroupResponse.newBuilder() to construct.
    private DeleteGroupResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeleteGroupResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.Builder.class);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос удаления группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.DeleteGroupResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.DeleteGroupResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_DeleteGroupResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.getDefaultInstance();
      }

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse(this);
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.DeleteGroupResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.DeleteGroupResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.DeleteGroupResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getUserGroupOrBuilder();
  }
  /**
   * <pre>
   * Запрос на добавление связи пользователя и группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachRequest}
   */
  public static final class PutGroupUserAttachRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserAttachRequest)
      PutGroupUserAttachRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupUserAttachRequest.newBuilder() to construct.
    private PutGroupUserAttachRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupUserAttachRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.Builder.class);
    }

    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>
     * @return Whether the userGroup field is set.
     */
    @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>
     * @return The userGroup.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getUserGroupOrBuilder() {
      return userGroup_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance() : userGroup_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

      if (hasUserGroup() != other.hasUserGroup()) return false;
      if (hasUserGroup()) {
        if (!getUserGroup()
            .equals(other.getUserGroup())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на добавление связи пользователя и группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserAttachRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.userGroup_ = userGroupBuilder_ == null
              ? userGroup_
              : userGroupBuilder_.build();
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest.getDefaultInstance()) return this;
        if (other.hasUserGroup()) {
          mergeUserGroup(other.getUserGroup());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup userGroup_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder> userGroupBuilder_;
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the userGroup field is set.
       */
      public boolean hasUserGroup() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userGroup.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup() {
        if (userGroupBuilder_ == null) {
          return userGroup_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance() : userGroup_;
        } else {
          return userGroupBuilder_.getMessage();
        }
      }
      /**
       * <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) {
        if (userGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userGroup_ = value;
        } else {
          userGroupBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (userGroupBuilder_ == null) {
          userGroup_ = builderForValue.build();
        } else {
          userGroupBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (userGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            userGroup_ != null &&
            userGroup_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance()) {
            getUserGroupBuilder().mergeFrom(value);
          } else {
            userGroup_ = value;
          }
        } else {
          userGroupBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearUserGroup() {
        bitField0_ = (bitField0_ & ~0x00000001);
        userGroup_ = null;
        if (userGroupBuilder_ != null) {
          userGroupBuilder_.dispose();
          userGroupBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder getUserGroupBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getUserGroupFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getUserGroupOrBuilder() {
        if (userGroupBuilder_ != null) {
          return userGroupBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder> 
          getUserGroupFieldBuilder() {
        if (userGroupBuilder_ == null) {
          userGroupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder>(
                  getUserGroup(),
                  getParentForChildren(),
                  isClean());
          userGroup_ = null;
        }
        return userGroupBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserAttachRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserAttachRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PutGroupUserAttachResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupUserAttachResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Ответ на добавление связи пользователя и группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachResponse}
   */
  public static final class PutGroupUserAttachResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserAttachResponse)
      PutGroupUserAttachResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupUserAttachResponse.newBuilder() to construct.
    private PutGroupUserAttachResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupUserAttachResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.Builder.class);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на добавление связи пользователя и группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserAttachResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserAttachResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.getDefaultInstance();
      }

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

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse(this);
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserAttachResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserAttachResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserAttachResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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>
     *
     * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getUserGroupOrBuilder();
  }
  /**
   * <pre>
   * Запрос на удаление связи пользователя и группы
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachRequest}
   */
  public static final class PutGroupUserDetachRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserDetachRequest)
      PutGroupUserDetachRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupUserDetachRequest.newBuilder() to construct.
    private PutGroupUserDetachRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupUserDetachRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.Builder.class);
    }

    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>
     * @return Whether the userGroup field is set.
     */
    @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>
     * @return The userGroup.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getUserGroupOrBuilder() {
      return userGroup_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance() : userGroup_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

      if (hasUserGroup() != other.hasUserGroup()) return false;
      if (hasUserGroup()) {
        if (!getUserGroup()
            .equals(other.getUserGroup())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на удаление связи пользователя и группы
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserDetachRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.userGroup_ = userGroupBuilder_ == null
              ? userGroup_
              : userGroupBuilder_.build();
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest.getDefaultInstance()) return this;
        if (other.hasUserGroup()) {
          mergeUserGroup(other.getUserGroup());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup userGroup_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder> userGroupBuilder_;
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the userGroup field is set.
       */
      public boolean hasUserGroup() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userGroup.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getUserGroup() {
        if (userGroupBuilder_ == null) {
          return userGroup_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance() : userGroup_;
        } else {
          return userGroupBuilder_.getMessage();
        }
      }
      /**
       * <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) {
        if (userGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userGroup_ = value;
        } else {
          userGroupBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (userGroupBuilder_ == null) {
          userGroup_ = builderForValue.build();
        } else {
          userGroupBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (userGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            userGroup_ != null &&
            userGroup_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance()) {
            getUserGroupBuilder().mergeFrom(value);
          } else {
            userGroup_ = value;
          }
        } else {
          userGroupBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearUserGroup() {
        bitField0_ = (bitField0_ & ~0x00000001);
        userGroup_ = null;
        if (userGroupBuilder_ != null) {
          userGroupBuilder_.dispose();
          userGroupBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder getUserGroupBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getUserGroupFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup user_group = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getUserGroupOrBuilder() {
        if (userGroupBuilder_ != null) {
          return userGroupBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder> 
          getUserGroupFieldBuilder() {
        if (userGroupBuilder_ == null) {
          userGroupBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder>(
                  getUserGroup(),
                  getParentForChildren(),
                  isClean());
          userGroup_ = null;
        }
        return userGroupBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserDetachRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserDetachRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GroupUserFilter filter = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder getFilterOrBuilder();

    /**
     * <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();
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder getPagingOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserListRequest)
      GetGroupUserListRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupUserListRequest.newBuilder() to construct.
    private GetGroupUserListRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupUserListRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.Builder.class);
    }

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

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

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

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter filter_;
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     * @return The filter.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance() : filter_;
    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
     * @return The paging.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder getPagingOrBuilder() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging) pagination_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest.getDefaultInstance();
      }

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

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

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

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

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

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

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

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

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

      private int bitField0_;

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

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder> pagingBuilder_;
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       * @return Whether the paging field is set.
       */
      @java.lang.Override
      public boolean hasPaging() {
        return paginationCase_ == 2;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       * @return The paging.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging getPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging) pagination_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.getDefaultInstance();
        } else {
          if (paginationCase_ == 2) {
            return pagingBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging value) {
        if (pagingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pagination_ = value;
          onChanged();
        } else {
          pagingBuilder_.setMessage(value);
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder builderForValue) {
        if (pagingBuilder_ == null) {
          pagination_ = builderForValue.build();
          onChanged();
        } else {
          pagingBuilder_.setMessage(builderForValue.build());
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging value) {
        if (pagingBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (paginationCase_ == 2) {
            pagingBuilder_.mergeFrom(value);
          } else {
            pagingBuilder_.setMessage(value);
          }
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public Builder clearPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
            onChanged();
          }
        } else {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
          }
          pagingBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder getPagingBuilder() {
        return getPagingFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder getPagingOrBuilder() {
        if ((paginationCase_ == 2) && (pagingBuilder_ != null)) {
          return pagingBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder> 
          getPagingFieldBuilder() {
        if (pagingBuilder_ == null) {
          if (!(paginationCase_ == 2)) {
            pagination_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.getDefaultInstance();
          }
          pagingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging) pagination_,
                  getParentForChildren(),
                  isClean());
          pagination_ = null;
        }
        paginationCase_ = 2;
        onChanged();
        return pagingBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserListRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserListRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupUserPaging)
      GroupUserPagingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupUserPaging.newBuilder() to construct.
    private GroupUserPaging(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupUserPaging() {
      orderByType_ = 0;
      directionType_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserPaging_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserPaging_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder.class);
    }

    /**
     * <pre>
     * Справочник типов сортировки
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupUserPaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      ORDER_BY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * По Идентификатору группы
       * </pre>
       *
       * <code>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;


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

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

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return 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>() {
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

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

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

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

      private final int value;

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

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

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

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


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

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

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

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

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

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

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

      private final int value;

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

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

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_ = 0;
    /**
     * <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;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_ = 0;
    /**
     * <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;
    }

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

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

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Пагинация связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupUserPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupUserPaging)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPagingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserPaging_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserPaging_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserPaging_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.getDefaultInstance();
      }

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

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

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

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

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

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

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

      private int orderByType_ = 0;
      /**
       * <pre>
       * Тип значения сортировки.
       * По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.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>
       * @param value The enum numeric value on the wire for orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        orderByType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * По умолчанию: ID
       * </pre>
       *
       * <code>.keyapis.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 orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.OrderByType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        orderByType_ = value.getNumber();
        onChanged();
        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() {
        bitField0_ = (bitField0_ & ~0x00000001);
        orderByType_ = 0;
        onChanged();
        return this;
      }

      private int directionType_ = 0;
      /**
       * <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>
       * @param value The enum numeric value on the wire for directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionTypeValue(int value) {
        directionType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.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 directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging.DirectionType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        directionType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserPaging.DirectionType direction_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectionType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        directionType_ = 0;
        onChanged();
        return this;
      }

      private int limit_ ;
      /**
       * <pre>
       * Количество записей на страницу.
       * Минимальное значение: 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.
       * @return This builder for chaining.
       */
      public Builder setLimit(int value) {

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

      private int offset_ ;
      /**
       * <pre>
       * Сдвиг.
       * По умолчанию: 0
       * </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.
       * @return This builder for chaining.
       */
      public Builder setOffset(int value) {

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

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


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

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupUserPaging)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserPaging getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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 value to return.
     * @return The bytes of 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 value to return.
     * @return The bytes of 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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupUserFilter)
      GroupUserFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupUserFilter.newBuilder() to construct.
    private GroupUserFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupUserFilter() {
      groupIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      userIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserFilter_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder.class);
    }

    public static final int GROUP_IDS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList groupIds_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @return A list containing the groupIds.
     */
    public com.google.protobuf.ProtocolStringList
        getGroupIdsList() {
      return groupIds_;
    }
    /**
     * <pre>
     * По Идентификаторам группы
     * </pre>
     *
     * <code>repeated string group_ids = 1;</code>
     * @return The count of groupIds.
     */
    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.
     */
    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.
     */
    public com.google.protobuf.ByteString
        getGroupIdsBytes(int index) {
      return groupIds_.getByteString(index);
    }

    public static final int USER_IDS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList userIds_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @return A list containing the userIds.
     */
    public com.google.protobuf.ProtocolStringList
        getUserIdsList() {
      return userIds_;
    }
    /**
     * <pre>
     * По Идентификаторам пользователя
     * </pre>
     *
     * <code>repeated string user_ids = 2;</code>
     * @return The count of userIds.
     */
    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.
     */
    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.
     */
    public com.google.protobuf.ByteString
        getUserIdsBytes(int index) {
      return userIds_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < groupIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, groupIds_.getRaw(i));
      }
      for (int i = 0; i < userIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, userIds_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < groupIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(groupIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getGroupIdsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < userIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(userIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getUserIdsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getGroupIdsCount() > 0) {
        hash = (37 * hash) + GROUP_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getGroupIdsList().hashCode();
      }
      if (getUserIdsCount() > 0) {
        hash = (37 * hash) + USER_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getUserIdsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

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

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Фильтр для запроса связей пользователей и групп.
     * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
     * При передаче нескольких разных параметров фильтра они работают в выборке через И
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupUserFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupUserFilter)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserFilter_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        groupIds_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        userIds_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupUserFilter_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          groupIds_.makeImmutable();
          result.groupIds_ = groupIds_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          userIds_.makeImmutable();
          result.userIds_ = userIds_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance()) return this;
        if (!other.groupIds_.isEmpty()) {
          if (groupIds_.isEmpty()) {
            groupIds_ = other.groupIds_;
            bitField0_ |= 0x00000001;
          } else {
            ensureGroupIdsIsMutable();
            groupIds_.addAll(other.groupIds_);
          }
          onChanged();
        }
        if (!other.userIds_.isEmpty()) {
          if (userIds_.isEmpty()) {
            userIds_ = other.userIds_;
            bitField0_ |= 0x00000002;
          } else {
            ensureUserIdsIsMutable();
            userIds_.addAll(other.userIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.LazyStringArrayList groupIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureGroupIdsIsMutable() {
        if (!groupIds_.isModifiable()) {
          groupIds_ = new com.google.protobuf.LazyStringArrayList(groupIds_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @return A list containing the groupIds.
       */
      public com.google.protobuf.ProtocolStringList
          getGroupIdsList() {
        groupIds_.makeImmutable();
        return groupIds_;
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @return The count of groupIds.
       */
      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.
       */
      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.
       */
      public com.google.protobuf.ByteString
          getGroupIdsBytes(int index) {
        return groupIds_.getByteString(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) {
        if (value == null) { throw new NullPointerException(); }
        ensureGroupIdsIsMutable();
        groupIds_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        ensureGroupIdsIsMutable();
        groupIds_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        ensureGroupIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, groupIds_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам группы
       * </pre>
       *
       * <code>repeated string group_ids = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupIds() {
        groupIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureGroupIdsIsMutable();
        groupIds_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList userIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureUserIdsIsMutable() {
        if (!userIds_.isModifiable()) {
          userIds_ = new com.google.protobuf.LazyStringArrayList(userIds_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @return A list containing the userIds.
       */
      public com.google.protobuf.ProtocolStringList
          getUserIdsList() {
        userIds_.makeImmutable();
        return userIds_;
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @return The count of userIds.
       */
      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.
       */
      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.
       */
      public com.google.protobuf.ByteString
          getUserIdsBytes(int index) {
        return userIds_.getByteString(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) {
        if (value == null) { throw new NullPointerException(); }
        ensureUserIdsIsMutable();
        userIds_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        ensureUserIdsIsMutable();
        userIds_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        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) {
        ensureUserIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, userIds_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По Идентификаторам пользователя
       * </pre>
       *
       * <code>repeated string user_ids = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserIds() {
        userIds_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureUserIdsIsMutable();
        userIds_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupUserFilter)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupUserFilter)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter();
    }

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

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

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

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

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

    /**
     * <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();
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getDataOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserListResponse)
      GetGroupUserListResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupUserListResponse.newBuilder() to construct.
    private GetGroupUserListResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupUserListResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.Builder.class);
    }

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

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

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

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Связь пользователя и группы
     * </pre>
     *
     * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
     * @return The data.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup) type_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getData()
              .equals(other.getData())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос получения списка связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupUserListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupUserListResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (dataBuilder_ != null) {
          dataBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserListResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            dataBuilder_ != null) {
          result.type_ = dataBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            mergeData(other.getData());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup) type_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup value) {
        if (dataBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Связь пользователя и группы
       * </pre>
       *
       * <code>.keyapis.access_management.v1.UserGroup data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroupOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.UserGroup) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserListResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserListResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupUserListResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupUserListResponse>() {
      @java.lang.Override
      public GetGroupUserListResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupUserListResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupUserListResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserListResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupUserCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupUserCountRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GroupUserFilter filter = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder getFilterOrBuilder();
  }
  /**
   * <pre>
   * Запрос получения количества связей пользователей и групп
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupUserCountRequest}
   */
  public static final class GetGroupUserCountRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserCountRequest)
      GetGroupUserCountRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupUserCountRequest.newBuilder() to construct.
    private GetGroupUserCountRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupUserCountRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupUserCountRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.Builder.class);
    }

    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>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр связей пользователей и групп
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
     * @return The filter.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance() : filter_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (filter_ != null) {
        output.writeMessage(1, getFilter());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (filter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFilter());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest) obj;

      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFilter()) {
        hash = (37 * hash) + FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFilter().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос получения количества связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupUserCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupUserCountRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.filter_ = filterBuilder_ == null
              ? filter_
              : filterBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest.getDefaultInstance()) return this;
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFilterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
        if (filterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          filter_ = value;
        } else {
          filterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public Builder clearFilter() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр связей пользователей и групп
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupUserFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupUserFilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserCountRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserCountRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupUserCountRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupUserCountRequest>() {
      @java.lang.Override
      public GetGroupUserCountRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupUserCountRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupUserCountRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupUserCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupUserCountResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Всего связей пользователей и групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Всего связей пользователей и групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    int getData();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupUserCountResponse)
      GetGroupUserCountResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupUserCountResponse.newBuilder() to construct.
    private GetGroupUserCountResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupUserCountResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupUserCountResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.Builder.class);
    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Всего связей пользователей и групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Всего связей пользователей и групп
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public int getData() {
      if (typeCase_ == 1) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) type_));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) type_));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (getData()
              != other.getData()) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос получения количества связей пользователей и групп
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupUserCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupUserCountResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            setData(other.getData());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                type_ = input.readInt32();
                typeCase_ = 1;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return The data.
       */
      public int getData() {
        if (typeCase_ == 1) {
          return (java.lang.Integer) type_;
        }
        return 0;
      }
      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {

        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Всего связей пользователей и групп
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupUserCountResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupUserCountResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupUserCountResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupUserCountResponse>() {
      @java.lang.Override
      public GetGroupUserCountResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupUserCountResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupUserCountResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupUserCountResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PutGroupUserDetachResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.PutGroupUserDetachResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос удаления точки доступа в профиль
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachResponse}
   */
  public static final class PutGroupUserDetachResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.PutGroupUserDetachResponse)
      PutGroupUserDetachResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PutGroupUserDetachResponse.newBuilder() to construct.
    private PutGroupUserDetachResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PutGroupUserDetachResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PutGroupUserDetachResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос удаления точки доступа в профиль
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.PutGroupUserDetachResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.PutGroupUserDetachResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.PutGroupUserDetachResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.PutGroupUserDetachResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PutGroupUserDetachResponse>
        PARSER = new com.google.protobuf.AbstractParser<PutGroupUserDetachResponse>() {
      @java.lang.Override
      public PutGroupUserDetachResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PutGroupUserDetachResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PutGroupUserDetachResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.PutGroupUserDetachResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupClaimCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimCountRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GroupClaimFilter filter = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder();
  }
  /**
   * <pre>
   * Запрос получения количества уникальных назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimCountRequest}
   */
  public static final class GetGroupClaimCountRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimCountRequest)
      GetGroupClaimCountRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupClaimCountRequest.newBuilder() to construct.
    private GetGroupClaimCountRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupClaimCountRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupClaimCountRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.Builder.class);
    }

    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>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return The filter.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (filter_ != null) {
        output.writeMessage(1, getFilter());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (filter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFilter());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest) obj;

      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFilter()) {
        hash = (37 * hash) + FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFilter().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос получения количества уникальных назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimCountRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.filter_ = filterBuilder_ == null
              ? filter_
              : filterBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest.getDefaultInstance()) return this;
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFilterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        if (filterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          filter_ = value;
        } else {
          filterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder clearFilter() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimCountRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimCountRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupClaimCountRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupClaimCountRequest>() {
      @java.lang.Override
      public GetGroupClaimCountRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupClaimCountRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupClaimCountRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupClaimCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimCountResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Всего уникальных атрибутов пользователя
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Всего уникальных атрибутов пользователя
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    int getData();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimCountResponse)
      GetGroupClaimCountResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupClaimCountResponse.newBuilder() to construct.
    private GetGroupClaimCountResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupClaimCountResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupClaimCountResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.Builder.class);
    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Всего уникальных атрибутов пользователя
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Всего уникальных атрибутов пользователя
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public int getData() {
      if (typeCase_ == 1) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) type_));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) type_));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (getData()
              != other.getData()) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос получения количества уникальных назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimCountResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            setData(other.getData());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                type_ = input.readInt32();
                typeCase_ = 1;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return The data.
       */
      public int getData() {
        if (typeCase_ == 1) {
          return (java.lang.Integer) type_;
        }
        return 0;
      }
      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {

        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Всего уникальных атрибутов пользователя
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimCountResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimCountResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupClaimCountResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupClaimCountResponse>() {
      @java.lang.Override
      public GetGroupClaimCountResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupClaimCountResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupClaimCountResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimCountResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupClaimExistRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GroupClaimFilter filter = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder();
  }
  /**
   * <pre>
   * Запрос проверки назначенных атрибутов пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistRequest}
   */
  public static final class GetGroupClaimExistRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistRequest)
      GetGroupClaimExistRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupClaimExistRequest.newBuilder() to construct.
    private GetGroupClaimExistRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupClaimExistRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupClaimExistRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.Builder.class);
    }

    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>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return The filter.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (filter_ != null) {
        output.writeMessage(1, getFilter());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (filter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFilter());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest) obj;

      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFilter()) {
        hash = (37 * hash) + FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFilter().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос проверки назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.filter_ = filterBuilder_ == null
              ? filter_
              : filterBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest.getDefaultInstance()) return this;
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFilterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        if (filterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          filter_ = value;
        } else {
          filterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder clearFilter() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimExistRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupClaimExistRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupClaimExistRequest>() {
      @java.lang.Override
      public GetGroupClaimExistRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupClaimExistRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupClaimExistRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupClaimExistResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder getErrorOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistResponse)
      GetGroupClaimExistResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupClaimExistResponse.newBuilder() to construct.
    private GetGroupClaimExistResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupClaimExistResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupClaimExistResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <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();
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       */
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyErrorOrBuilder getClaimFilterEmptyOrBuilder();

      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.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
        ErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Error.newBuilder() to construct.
      private Error(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Error() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Error();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder.class);
      }

      public interface ClaimFilterEmptyErrorOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
          com.google.protobuf.MessageOrBuilder {
      }
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError}
       */
      public static final class ClaimFilterEmptyError extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
          ClaimFilterEmptyErrorOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use ClaimFilterEmptyError.newBuilder() to construct.
        private ClaimFilterEmptyError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private ClaimFilterEmptyError() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new ClaimFilterEmptyError();
        }

        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.Builder.class);
        }

        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)) {
            return super.equals(obj);
          }
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError) obj;

          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(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 PARSER.parseFrom(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 PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
        }
        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
              .parseWithIOException(PARSER, 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.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
              .parseWithIOException(PARSER, 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.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyErrorOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.Builder.class);
          }

          // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_descriptor;
          }

          @java.lang.Override
          public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getDefaultInstanceForType() {
            return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.getDefaultInstance();
          }

          @java.lang.Override
          public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError build() {
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError buildPartial() {
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError(this);
            onBuilt();
            return result;
          }

          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError) {
              return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError other) {
            if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.getDefaultInstance()) return this;
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError)
        }

        // @@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 {
          DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError();
        }

        public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ClaimFilterEmptyError>
            PARSER = new com.google.protobuf.AbstractParser<ClaimFilterEmptyError>() {
          @java.lang.Override
          public ClaimFilterEmptyError parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<ClaimFilterEmptyError> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ClaimFilterEmptyError> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      private int reasonCase_ = 0;
      @SuppressWarnings("serial")
      private java.lang.Object reason_;
      public enum ReasonCase
          implements com.google.protobuf.Internal.EnumLite,
              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
        CLAIM_FILTER_EMPTY(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @param value The number of the enum to look for.
         * @return The enum associated with the given number.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return CLAIM_FILTER_EMPTY;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      public static final int CLAIM_FILTER_EMPTY_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       * @return Whether the claimFilterEmpty field is set.
       */
      @java.lang.Override
      public boolean hasClaimFilterEmpty() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка пустого фильтра по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
       * @return The claimFilterEmpty.
       */
      @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>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyErrorOrBuilder getClaimFilterEmptyOrBuilder() {
        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();
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getClaimFilterEmpty()
                .equals(other.getClaimFilterEmpty())) return false;
            break;
          case 0:
          default:
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        switch (reasonCase_) {
          case 1:
            hash = (37 * hash) + CLAIM_FILTER_EMPTY_FIELD_NUMBER;
            hash = (53 * hash) + getClaimFilterEmpty().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка запроса
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          if (claimFilterEmptyBuilder_ != null) {
            claimFilterEmptyBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error build() {
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error buildPartial() {
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              claimFilterEmptyBuilder_ != null) {
            result.reason_ = claimFilterEmptyBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) {
            return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error other) {
          if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case CLAIM_FILTER_EMPTY: {
              mergeClaimFilterEmpty(other.getClaimFilterEmpty());
              break;
            }
            case REASON_NOT_SET: {
              break;
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getClaimFilterEmptyFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

        public Builder clearReason() {
          reasonCase_ = 0;
          reason_ = null;
          onChanged();
          return this;
        }

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyErrorOrBuilder> claimFilterEmptyBuilder_;
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         * @return Whether the claimFilterEmpty field is set.
         */
        @java.lang.Override
        public boolean hasClaimFilterEmpty() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         * @return The claimFilterEmpty.
         */
        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError getClaimFilterEmpty() {
          if (claimFilterEmptyBuilder_ == null) {
            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();
          } else {
            if (reasonCase_ == 1) {
              return claimFilterEmptyBuilder_.getMessage();
            }
            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>
         */
        public Builder setClaimFilterEmpty(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError value) {
          if (claimFilterEmptyBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            claimFilterEmptyBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          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) {
          if (claimFilterEmptyBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            claimFilterEmptyBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          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) {
          if (claimFilterEmptyBuilder_ == null) {
            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;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              claimFilterEmptyBuilder_.mergeFrom(value);
            } else {
              claimFilterEmptyBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        public Builder clearClaimFilterEmpty() {
          if (claimFilterEmptyBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            claimFilterEmptyBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка пустого фильтра по атрибутам пользователя
         * </pre>
         *
         * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError claim_filter_empty = 1;</code>
         */
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.Builder getClaimFilterEmptyBuilder() {
          return getClaimFilterEmptyFieldBuilder().getBuilder();
        }
        /**
         * <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.ClaimFilterEmptyErrorOrBuilder getClaimFilterEmptyOrBuilder() {
          if ((reasonCase_ == 1) && (claimFilterEmptyBuilder_ != null)) {
            return claimFilterEmptyBuilder_.getMessageOrBuilder();
          } else {
            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 com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyErrorOrBuilder> 
            getClaimFilterEmptyFieldBuilder() {
          if (claimFilterEmptyBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.getDefaultInstance();
            }
            claimFilterEmptyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyErrorOrBuilder>(
                    (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.ClaimFilterEmptyError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return claimFilterEmptyBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistResponse.Error)
      }

      // @@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 {
        DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error();
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<Error>
          PARSER = new com.google.protobuf.AbstractParser<Error>() {
        @java.lang.Override
        public Error parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<Error> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<Error> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATA(1),
      ERROR(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 2: return ERROR;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Флаг наличия
     * </pre>
     *
     * <code>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;
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
     * @return The error.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeBool(
            1, (boolean)((java.lang.Boolean) type_));
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(
              1, (boolean)((java.lang.Boolean) type_));
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (getData()
              != other.getData()) return false;
          break;
        case 2:
          if (!getError()
              .equals(other.getError())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getData());
          break;
        case 2:
          hash = (37 * hash) + ERROR_FIELD_NUMBER;
          hash = (53 * hash) + getError().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос проверки назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimExistResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimExistResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (errorBuilder_ != null) {
          errorBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 2 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            setData(other.getData());
            break;
          }
          case ERROR: {
            mergeError(other.getError());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                type_ = input.readBool();
                typeCase_ = 1;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 2;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      /**
       * <pre>
       * Флаг наличия
       * </pre>
       *
       * <code>bool data = 1;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Флаг наличия
       * </pre>
       *
       * <code>bool data = 1;</code>
       * @return The data.
       */
      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.
       * @return This builder for chaining.
       */
      public Builder setData(boolean value) {

        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Флаг наличия
       * </pre>
       *
       * <code>bool data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) type_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 2) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 2;
        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) {
        if (errorBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (typeCase_ == 2) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GetGroupClaimExistResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 2) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 2)) {
            type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.ErrorOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 2;
        onChanged();
        return errorBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimExistResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimExistResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupClaimExistResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupClaimExistResponse>() {
      @java.lang.Override
      public GetGroupClaimExistResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupClaimExistResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupClaimExistResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimExistResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupClaimListRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimListRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GroupClaimFilter filter = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder();

    /**
     * <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();
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder getPagingOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimListRequest)
      GetGroupClaimListRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupClaimListRequest.newBuilder() to construct.
    private GetGroupClaimListRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupClaimListRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupClaimListRequest();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.Builder.class);
    }

    private int paginationCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object pagination_;
    public enum PaginationCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      PAGING(2),
      PAGINATION_NOT_SET(0);
      private final int value;
      private PaginationCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PaginationCase valueOf(int value) {
        return forNumber(value);
      }

      public static PaginationCase forNumber(int value) {
        switch (value) {
          case 2: return PAGING;
          case 0: return PAGINATION_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public PaginationCase
    getPaginationCase() {
      return PaginationCase.forNumber(
          paginationCase_);
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter filter_;
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
     * @return The filter.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Пагинация по атрибутам пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
     * @return The paging.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder getPagingOrBuilder() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) pagination_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (filter_ != null) {
        output.writeMessage(1, getFilter());
      }
      if (paginationCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) pagination_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (filter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getFilter());
      }
      if (paginationCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) pagination_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest) obj;

      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (!getPaginationCase().equals(other.getPaginationCase())) return false;
      switch (paginationCase_) {
        case 2:
          if (!getPaging()
              .equals(other.getPaging())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasFilter()) {
        hash = (37 * hash) + FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFilter().hashCode();
      }
      switch (paginationCase_) {
        case 2:
          hash = (37 * hash) + PAGING_FIELD_NUMBER;
          hash = (53 * hash) + getPaging().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос уникального списка назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimListRequest)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        if (pagingBuilder_ != null) {
          pagingBuilder_.clear();
        }
        paginationCase_ = 0;
        pagination_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.filter_ = filterBuilder_ == null
              ? filter_
              : filterBuilder_.build();
        }
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest result) {
        result.paginationCase_ = paginationCase_;
        result.pagination_ = this.pagination_;
        if (paginationCase_ == 2 &&
            pagingBuilder_ != null) {
          result.pagination_ = pagingBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest.getDefaultInstance()) return this;
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        switch (other.getPaginationCase()) {
          case PAGING: {
            mergePaging(other.getPaging());
            break;
          }
          case PAGINATION_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getFilterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPagingFieldBuilder().getBuilder(),
                    extensionRegistry);
                paginationCase_ = 2;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int paginationCase_ = 0;
      private java.lang.Object pagination_;
      public PaginationCase
          getPaginationCase() {
        return PaginationCase.forNumber(
            paginationCase_);
      }

      public Builder clearPagination() {
        paginationCase_ = 0;
        pagination_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        if (filterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          filter_ = value;
        } else {
          filterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public Builder clearFilter() {
        bitField0_ = (bitField0_ & ~0x00000001);
        filter_ = null;
        if (filterBuilder_ != null) {
          filterBuilder_.dispose();
          filterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр атрибутов пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder> pagingBuilder_;
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       * @return Whether the paging field is set.
       */
      @java.lang.Override
      public boolean hasPaging() {
        return paginationCase_ == 2;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       * @return The paging.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) pagination_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance();
        } else {
          if (paginationCase_ == 2) {
            return pagingBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging value) {
        if (pagingBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pagination_ = value;
          onChanged();
        } else {
          pagingBuilder_.setMessage(value);
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder builderForValue) {
        if (pagingBuilder_ == null) {
          pagination_ = builderForValue.build();
          onChanged();
        } else {
          pagingBuilder_.setMessage(builderForValue.build());
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging value) {
        if (pagingBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (paginationCase_ == 2) {
            pagingBuilder_.mergeFrom(value);
          } else {
            pagingBuilder_.setMessage(value);
          }
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public Builder clearPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
            onChanged();
          }
        } else {
          if (paginationCase_ == 2) {
            paginationCase_ = 0;
            pagination_ = null;
          }
          pagingBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder getPagingBuilder() {
        return getPagingFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Пагинация по атрибутам пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder getPagingOrBuilder() {
        if ((paginationCase_ == 2) && (pagingBuilder_ != null)) {
          return pagingBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder> 
          getPagingFieldBuilder() {
        if (pagingBuilder_ == null) {
          if (!(paginationCase_ == 2)) {
            pagination_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance();
          }
          pagingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) pagination_,
                  getParentForChildren(),
                  isClean());
          pagination_ = null;
        }
        paginationCase_ = 2;
        onChanged();
        return pagingBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimListRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimListRequest)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupClaimListRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupClaimListRequest>() {
      @java.lang.Override
      public GetGroupClaimListRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupClaimListRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupClaimListRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGroupClaimListResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GetGroupClaimListResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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();
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getDataOrBuilder();

    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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GetGroupClaimListResponse)
      GetGroupClaimListResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGroupClaimListResponse.newBuilder() to construct.
    private GetGroupClaimListResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGroupClaimListResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetGroupClaimListResponse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.Builder.class);
    }

    private int typeCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object type_;
    public enum TypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Атрибут пользователя
     * </pre>
     *
     * <code>.keyapis.access_management.v1.Claim data = 1;</code>
     * @return The data.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim) type_;
      }
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typeCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim) type_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typeCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getData()
              .equals(other.getData())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос уникального списка назначенных атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GetGroupClaimListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GetGroupClaimListResponse)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (dataBuilder_ != null) {
          dataBuilder_.clear();
        }
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            dataBuilder_ != null) {
          result.type_ = dataBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            mergeData(other.getData());
            break;
          }
          case TYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

      public Builder clearType() {
        typeCase_ = 0;
        type_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim) type_;
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim value) {
        if (dataBuilder_ == null) {
          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;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Атрибут пользователя
       * </pre>
       *
       * <code>.keyapis.access_management.v1.Claim data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ClaimOrBuilder>(
                  (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.Claim) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GetGroupClaimListResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GetGroupClaimListResponse)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGroupClaimListResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetGroupClaimListResponse>() {
      @java.lang.Override
      public GetGroupClaimListResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetGroupClaimListResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetGroupClaimListResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GetGroupClaimListResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupClaimFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupClaimFilter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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>
     * По идентификатору пользователя.
     * Соответствует subject, sub, client_id из JWT.
     * Для пользователя Ключа это user_id Ключа
     * </pre>
     *
     * <code>.google.protobuf.StringValue user_id = 1;</code>
     */
    com.google.protobuf.StringValueOrBuilder getUserIdOrBuilder();

    /**
     * <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>
     * По условию принадлежности к группе.
     * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
     * </pre>
     *
     * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
     */
    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder getUserDataOrBuilder();

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupClaimFilter)
      GroupClaimFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupClaimFilter.newBuilder() to construct.
    private GroupClaimFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupClaimFilter() {
      apiKeyHash_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GroupClaimFilter();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 2:
          return internalGetClaims();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder.class);
    }

    public interface UserDataOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupClaimFilter.UserData)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <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.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupClaimFilter.UserData)
        UserDataOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UserData.newBuilder() to construct.
      private UserData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UserData() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new UserData();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      @java.lang.Override
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetClaims();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.Builder.class);
      }

      public static final int CLAIMS_FIELD_NUMBER = 1;
      private static final class ClaimsDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            java.lang.String, java.lang.String> defaultEntry =
                com.google.protobuf.MapEntry
                .<java.lang.String, java.lang.String>newDefaultInstance(
                    ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_ClaimsEntry_descriptor, 
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "");
      }
      @SuppressWarnings("serial")
      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> claims_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetClaims() {
        if (claims_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ClaimsDefaultEntryHolder.defaultEntry);
        }
        return claims_;
      }
      public int getClaimsCount() {
        return internalGetClaims().getMap().size();
      }
      /**
       * <pre>
       * Атрибуты пользователя, claims которого мы хотим получить
       * </pre>
       *
       * <code>map&lt;string, string&gt; claims = 1;</code>
       */
      @java.lang.Override
      public boolean containsClaims(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetClaims().getMap().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 internalGetClaims().getMap();
      }
      /**
       * <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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims().getMap();
        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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        com.google.protobuf.GeneratedMessageV3
          .serializeStringMapTo(
            output,
            internalGetClaims(),
            ClaimsDefaultEntryHolder.defaultEntry,
            1);
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
             : internalGetClaims().getMap().entrySet()) {
          com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
          claims__ = ClaimsDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, claims__);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData)) {
          return super.equals(obj);
        }
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData) obj;

        if (!internalGetClaims().equals(
            other.internalGetClaims())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (!internalGetClaims().getMap().isEmpty()) {
          hash = (37 * hash) + CLAIMS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetClaims().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(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 PARSER.parseFrom(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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, 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.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Условие принадлежности к группе
       * </pre>
       *
       * Protobuf type {@code keyapis.access_management.v1.GroupClaimFilter.UserData}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupClaimFilter.UserData)
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_descriptor;
        }

        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 1:
              return internalGetClaims();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(
            int number) {
          switch (number) {
            case 1:
              return internalGetMutableClaims();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.Builder.class);
        }

        // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          internalGetMutableClaims().clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getDefaultInstanceForType() {
          return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData build() {
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData buildPartial() {
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.claims_ = internalGetClaims();
            result.claims_.makeImmutable();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData) {
            return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData other) {
          if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.getDefaultInstance()) return this;
          internalGetMutableClaims().mergeFrom(
              other.internalGetClaims());
          bitField0_ |= 0x00000001;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                  claims__ = input.readMessage(
                      ClaimsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                  internalGetMutableClaims().getMutableMap().put(
                      claims__.getKey(), claims__.getValue());
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private com.google.protobuf.MapField<
            java.lang.String, java.lang.String> claims_;
        private com.google.protobuf.MapField<java.lang.String, java.lang.String>
            internalGetClaims() {
          if (claims_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                ClaimsDefaultEntryHolder.defaultEntry);
          }
          return claims_;
        }
        private com.google.protobuf.MapField<java.lang.String, java.lang.String>
            internalGetMutableClaims() {
          if (claims_ == null) {
            claims_ = com.google.protobuf.MapField.newMapField(
                ClaimsDefaultEntryHolder.defaultEntry);
          }
          if (!claims_.isMutable()) {
            claims_ = claims_.copy();
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return claims_;
        }
        public int getClaimsCount() {
          return internalGetClaims().getMap().size();
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        @java.lang.Override
        public boolean containsClaims(
            java.lang.String key) {
          if (key == null) { throw new NullPointerException("map key"); }
          return internalGetClaims().getMap().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 internalGetClaims().getMap();
        }
        /**
         * <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) {
          if (key == null) { throw new NullPointerException("map key"); }
          java.util.Map<java.lang.String, java.lang.String> map =
              internalGetClaims().getMap();
          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) {
          if (key == null) { throw new NullPointerException("map key"); }
          java.util.Map<java.lang.String, java.lang.String> map =
              internalGetClaims().getMap();
          if (!map.containsKey(key)) {
            throw new java.lang.IllegalArgumentException();
          }
          return map.get(key);
        }
        public Builder clearClaims() {
          bitField0_ = (bitField0_ & ~0x00000001);
          internalGetMutableClaims().getMutableMap()
              .clear();
          return this;
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        public Builder removeClaims(
            java.lang.String key) {
          if (key == null) { throw new NullPointerException("map key"); }
          internalGetMutableClaims().getMutableMap()
              .remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.String>
            getMutableClaims() {
          bitField0_ |= 0x00000001;
          return internalGetMutableClaims().getMutableMap();
        }
        /**
         * <pre>
         * Атрибуты пользователя, claims которого мы хотим получить
         * </pre>
         *
         * <code>map&lt;string, string&gt; claims = 1;</code>
         */
        public Builder putClaims(
            java.lang.String key,
            java.lang.String value) {
          if (key == null) { throw new NullPointerException("map key"); }
          if (value == null) { throw new NullPointerException("map value"); }
          internalGetMutableClaims().getMutableMap()
              .put(key, value);
          bitField0_ |= 0x00000001;
          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) {
          internalGetMutableClaims().getMutableMap()
              .putAll(values);
          bitField0_ |= 0x00000001;
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupClaimFilter.UserData)
      }

      // @@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 {
        DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData();
      }

      public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<UserData>
          PARSER = new com.google.protobuf.AbstractParser<UserData>() {
        @java.lang.Override
        public UserData parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<UserData> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<UserData> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    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>
     * @return Whether the userId field is set.
     */
    @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>
     * @return The userId.
     */
    @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>
     */
    @java.lang.Override
    public com.google.protobuf.StringValueOrBuilder getUserIdOrBuilder() {
      return userId_ == null ? com.google.protobuf.StringValue.getDefaultInstance() : userId_;
    }

    public static final int CLAIMS_FIELD_NUMBER = 2;
    private static final class ClaimsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_ClaimsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> claims_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetClaims() {
      if (claims_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ClaimsDefaultEntryHolder.defaultEntry);
      }
      return claims_;
    }
    public int getClaimsCount() {
      return internalGetClaims().getMap().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) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetClaims().getMap().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 internalGetClaims().getMap();
    }
    /**
     * <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) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims().getMap();
      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) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetClaims().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    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>
     * @return Whether the userData field is set.
     */
    @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>
     * @return The userData.
     */
    @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>
     */
    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder getUserDataOrBuilder() {
      return userData_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.getDefaultInstance() : userData_;
    }

    public static final int API_KEY_HASH_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object apiKeyHash_ = "";
    /**
     * <pre>
     * Хешированное SHA256 значение ключа доступа ApiKey
     * </pre>
     *
     * <code>string api_key_hash = 4;</code>
     * @return The apiKeyHash.
     */
    @java.lang.Override
    public java.lang.String getApiKeyHash() {
      java.lang.Object ref = apiKeyHash_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        apiKeyHash_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = apiKeyHash_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiKeyHash_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userId_ != null) {
        output.writeMessage(1, getUserId());
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetClaims(),
          ClaimsDefaultEntryHolder.defaultEntry,
          2);
      if (userData_ != null) {
        output.writeMessage(3, getUserData());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(apiKeyHash_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, apiKeyHash_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserId());
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetClaims().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        claims__ = ClaimsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, claims__);
      }
      if (userData_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getUserData());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(apiKeyHash_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, apiKeyHash_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter) obj;

      if (hasUserId() != other.hasUserId()) return false;
      if (hasUserId()) {
        if (!getUserId()
            .equals(other.getUserId())) return false;
      }
      if (!internalGetClaims().equals(
          other.internalGetClaims())) return false;
      if (hasUserData() != other.hasUserData()) return false;
      if (hasUserData()) {
        if (!getUserData()
            .equals(other.getUserData())) return false;
      }
      if (!getApiKeyHash()
          .equals(other.getApiKeyHash())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserId()) {
        hash = (37 * hash) + USER_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserId().hashCode();
      }
      if (!internalGetClaims().getMap().isEmpty()) {
        hash = (37 * hash) + CLAIMS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetClaims().hashCode();
      }
      if (hasUserData()) {
        hash = (37 * hash) + USER_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getUserData().hashCode();
      }
      hash = (37 * hash) + API_KEY_HASH_FIELD_NUMBER;
      hash = (53 * hash) + getApiKeyHash().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Фильтр атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupClaimFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupClaimFilter)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetClaims();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableClaims();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        userId_ = null;
        if (userIdBuilder_ != null) {
          userIdBuilder_.dispose();
          userIdBuilder_ = null;
        }
        internalGetMutableClaims().clear();
        userData_ = null;
        if (userDataBuilder_ != null) {
          userDataBuilder_.dispose();
          userDataBuilder_ = null;
        }
        apiKeyHash_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.userId_ = userIdBuilder_ == null
              ? userId_
              : userIdBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.claims_ = internalGetClaims();
          result.claims_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.userData_ = userDataBuilder_ == null
              ? userData_
              : userDataBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.apiKeyHash_ = apiKeyHash_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.getDefaultInstance()) return this;
        if (other.hasUserId()) {
          mergeUserId(other.getUserId());
        }
        internalGetMutableClaims().mergeFrom(
            other.internalGetClaims());
        bitField0_ |= 0x00000002;
        if (other.hasUserData()) {
          mergeUserData(other.getUserData());
        }
        if (!other.getApiKeyHash().isEmpty()) {
          apiKeyHash_ = other.apiKeyHash_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getUserIdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                claims__ = input.readMessage(
                    ClaimsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableClaims().getMutableMap().put(
                    claims__.getKey(), claims__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getUserDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                apiKeyHash_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.StringValue userId_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.StringValue, com.google.protobuf.StringValue.Builder, com.google.protobuf.StringValueOrBuilder> userIdBuilder_;
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       * @return Whether the userId field is set.
       */
      public boolean hasUserId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       * @return The userId.
       */
      public com.google.protobuf.StringValue getUserId() {
        if (userIdBuilder_ == null) {
          return userId_ == null ? com.google.protobuf.StringValue.getDefaultInstance() : userId_;
        } else {
          return userIdBuilder_.getMessage();
        }
      }
      /**
       * <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) {
        if (userIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userId_ = value;
        } else {
          userIdBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (userIdBuilder_ == null) {
          userId_ = builderForValue.build();
        } else {
          userIdBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        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) {
        if (userIdBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            userId_ != null &&
            userId_ != com.google.protobuf.StringValue.getDefaultInstance()) {
            getUserIdBuilder().mergeFrom(value);
          } else {
            userId_ = value;
          }
        } else {
          userIdBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      public Builder clearUserId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        userId_ = null;
        if (userIdBuilder_ != null) {
          userIdBuilder_.dispose();
          userIdBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      public com.google.protobuf.StringValue.Builder getUserIdBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getUserIdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * По идентификатору пользователя.
       * Соответствует subject, sub, client_id из JWT.
       * Для пользователя Ключа это user_id Ключа
       * </pre>
       *
       * <code>.google.protobuf.StringValue user_id = 1;</code>
       */
      public com.google.protobuf.StringValueOrBuilder getUserIdOrBuilder() {
        if (userIdBuilder_ != null) {
          return userIdBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.StringValue, com.google.protobuf.StringValue.Builder, com.google.protobuf.StringValueOrBuilder> 
          getUserIdFieldBuilder() {
        if (userIdBuilder_ == null) {
          userIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.StringValue, com.google.protobuf.StringValue.Builder, com.google.protobuf.StringValueOrBuilder>(
                  getUserId(),
                  getParentForChildren(),
                  isClean());
          userId_ = null;
        }
        return userIdBuilder_;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> claims_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetClaims() {
        if (claims_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ClaimsDefaultEntryHolder.defaultEntry);
        }
        return claims_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableClaims() {
        if (claims_ == null) {
          claims_ = com.google.protobuf.MapField.newMapField(
              ClaimsDefaultEntryHolder.defaultEntry);
        }
        if (!claims_.isMutable()) {
          claims_ = claims_.copy();
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return claims_;
      }
      public int getClaimsCount() {
        return internalGetClaims().getMap().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) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetClaims().getMap().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 internalGetClaims().getMap();
      }
      /**
       * <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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims().getMap();
        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) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetClaims().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearClaims() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableClaims().getMutableMap()
            .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) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableClaims().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableClaims() {
        bitField0_ |= 0x00000002;
        return internalGetMutableClaims().getMutableMap();
      }
      /**
       * <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) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableClaims().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        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) {
        internalGetMutableClaims().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }

      private ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData userData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder> userDataBuilder_;
      /**
       * <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.
       */
      public boolean hasUserData() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       * @return The userData.
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData getUserData() {
        if (userDataBuilder_ == null) {
          return userData_ == null ? ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.getDefaultInstance() : userData_;
        } else {
          return userDataBuilder_.getMessage();
        }
      }
      /**
       * <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) {
        if (userDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userData_ = value;
        } else {
          userDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        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) {
        if (userDataBuilder_ == null) {
          userData_ = builderForValue.build();
        } else {
          userDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        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) {
        if (userDataBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            userData_ != null &&
            userData_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.getDefaultInstance()) {
            getUserDataBuilder().mergeFrom(value);
          } else {
            userData_ = value;
          }
        } else {
          userDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      public Builder clearUserData() {
        bitField0_ = (bitField0_ & ~0x00000004);
        userData_ = null;
        if (userDataBuilder_ != null) {
          userDataBuilder_.dispose();
          userDataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.Builder getUserDataBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getUserDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * По условию принадлежности к группе.
       * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimFilter.UserData user_data = 3;</code>
       */
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder getUserDataOrBuilder() {
        if (userDataBuilder_ != null) {
          return userDataBuilder_.getMessageOrBuilder();
        } else {
          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 com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder> 
          getUserDataFieldBuilder() {
        if (userDataBuilder_ == null) {
          userDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserData.Builder, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter.UserDataOrBuilder>(
                  getUserData(),
                  getParentForChildren(),
                  isClean());
          userData_ = null;
        }
        return userDataBuilder_;
      }

      private java.lang.Object apiKeyHash_ = "";
      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @return The apiKeyHash.
       */
      public java.lang.String getApiKeyHash() {
        java.lang.Object ref = apiKeyHash_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          apiKeyHash_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @return The bytes for apiKeyHash.
       */
      public com.google.protobuf.ByteString
          getApiKeyHashBytes() {
        java.lang.Object ref = apiKeyHash_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiKeyHash_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        apiKeyHash_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Хешированное SHA256 значение ключа доступа ApiKey
       * </pre>
       *
       * <code>string api_key_hash = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiKeyHash() {
        apiKeyHash_ = getDefaultInstance().getApiKeyHash();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        apiKeyHash_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupClaimFilter)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupClaimFilter)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupClaimFilter>
        PARSER = new com.google.protobuf.AbstractParser<GroupClaimFilter>() {
      @java.lang.Override
      public GroupClaimFilter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GroupClaimFilter> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupClaimFilter> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupClaimPagingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupClaimPaging)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupClaimPaging)
      GroupClaimPagingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupClaimPaging.newBuilder() to construct.
    private GroupClaimPaging(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupClaimPaging() {
      orderByType_ = 0;
      directionType_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GroupClaimPaging();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimPaging_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimPaging_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder.class);
    }

    /**
     * <pre>
     * Справочник типов значений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupClaimPaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      ORDER_BY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * По ключу атрибута
       * </pre>
       *
       * <code>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;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static OrderByType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return 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>() {
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDescriptor().getEnumTypes().get(0);
      }

      private static final OrderByType[] VALUES = values();

      public static OrderByType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private OrderByType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupClaimPaging.OrderByType)
    }

    /**
     * <pre>
     * Справочник типов направлений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_management.v1.GroupClaimPaging.DirectionType}
     */
    public enum DirectionType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>DIRECTION_TYPE_UNKNOWN = 0;</code>
       */
      DIRECTION_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * От большего к меньшему
       * </pre>
       *
       * <code>DESC = 1;</code>
       */
      DESC(1),
      /**
       * <pre>
       * От меньшего к большему
       * </pre>
       *
       * <code>ASC = 2;</code>
       */
      ASC(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>DIRECTION_TYPE_UNKNOWN = 0;</code>
       */
      public static final int DIRECTION_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * От большего к меньшему
       * </pre>
       *
       * <code>DESC = 1;</code>
       */
      public static final int DESC_VALUE = 1;
      /**
       * <pre>
       * От меньшего к большему
       * </pre>
       *
       * <code>ASC = 2;</code>
       */
      public static final int ASC_VALUE = 2;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DirectionType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static DirectionType forNumber(int value) {
        switch (value) {
          case 0: return DIRECTION_TYPE_UNKNOWN;
          case 1: return DESC;
          case 2: return ASC;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<DirectionType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          DirectionType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<DirectionType>() {
              public DirectionType findValueByNumber(int number) {
                return DirectionType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDescriptor().getEnumTypes().get(1);
      }

      private static final DirectionType[] VALUES = values();

      public static DirectionType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private DirectionType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.access_management.v1.GroupClaimPaging.DirectionType)
    }

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_ = 0;
    /**
     * <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;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_ = 0;
    /**
     * <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;
    }

    public static final int LIMIT_FIELD_NUMBER = 3;
    private int limit_ = 0;
    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @return The limit.
     */
    @java.lang.Override
    public int getLimit() {
      return limit_;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    private int offset_ = 0;
    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @return The offset.
     */
    @java.lang.Override
    public int getOffset() {
      return offset_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (orderByType_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType.ORDER_BY_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(1, orderByType_);
      }
      if (directionType_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType.DIRECTION_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(2, directionType_);
      }
      if (limit_ != 0) {
        output.writeInt32(3, limit_);
      }
      if (offset_ != 0) {
        output.writeInt32(4, offset_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (orderByType_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType.ORDER_BY_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, orderByType_);
      }
      if (directionType_ != ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType.DIRECTION_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, directionType_);
      }
      if (limit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, limit_);
      }
      if (offset_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, offset_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) obj;

      if (orderByType_ != other.orderByType_) return false;
      if (directionType_ != other.directionType_) return false;
      if (getLimit()
          != other.getLimit()) return false;
      if (getOffset()
          != other.getOffset()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ORDER_BY_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + orderByType_;
      hash = (37 * hash) + DIRECTION_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + directionType_;
      hash = (37 * hash) + LIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getLimit();
      hash = (37 * hash) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + getOffset();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Пагинация атрибутов пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupClaimPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupClaimPaging)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPagingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimPaging_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimPaging_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        orderByType_ = 0;
        directionType_ = 0;
        limit_ = 0;
        offset_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupClaimPaging_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.orderByType_ = orderByType_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.directionType_ = directionType_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.limit_ = limit_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.offset_ = offset_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.getDefaultInstance()) return this;
        if (other.orderByType_ != 0) {
          setOrderByTypeValue(other.getOrderByTypeValue());
        }
        if (other.directionType_ != 0) {
          setDirectionTypeValue(other.getDirectionTypeValue());
        }
        if (other.getLimit() != 0) {
          setLimit(other.getLimit());
        }
        if (other.getOffset() != 0) {
          setOffset(other.getOffset());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                orderByType_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                directionType_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                limit_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                offset_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int orderByType_ = 0;
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: 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>
       * @param value The enum numeric value on the wire for orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        orderByType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: 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 orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.OrderByType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        orderByType_ = value.getNumber();
        onChanged();
        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() {
        bitField0_ = (bitField0_ & ~0x00000001);
        orderByType_ = 0;
        onChanged();
        return this;
      }

      private int directionType_ = 0;
      /**
       * <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>
       * @param value The enum numeric value on the wire for directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionTypeValue(int value) {
        directionType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.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 directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionType(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging.DirectionType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        directionType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_management.v1.GroupClaimPaging.DirectionType direction_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectionType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        directionType_ = 0;
        onChanged();
        return this;
      }

      private int limit_ ;
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @return The limit.
       */
      @java.lang.Override
      public int getLimit() {
        return limit_;
      }
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @param value The limit to set.
       * @return This builder for chaining.
       */
      public Builder setLimit(int value) {

        limit_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLimit() {
        bitField0_ = (bitField0_ & ~0x00000004);
        limit_ = 0;
        onChanged();
        return this;
      }

      private int offset_ ;
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return The offset.
       */
      @java.lang.Override
      public int getOffset() {
        return offset_;
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(int value) {

        offset_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000008);
        offset_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupClaimPaging)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupClaimPaging)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupClaimPaging>
        PARSER = new com.google.protobuf.AbstractParser<GroupClaimPaging>() {
      @java.lang.Override
      public GroupClaimPaging parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GroupClaimPaging> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupClaimPaging> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupClaimPaging getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ValidationErrorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.ValidationError)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.ValidationError)
      ValidationErrorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ValidationError.newBuilder() to construct.
    private ValidationError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ValidationError() {
      path_ = "";
      message_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ValidationError();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_ValidationError_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_ValidationError_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Путь к полю в формате наименования 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() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        message_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Валидационное сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) obj;

      if (!getPath()
          .equals(other.getPath())) return false;
      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ошибки валидации.
     * Эти проверки выполняются до обращения в базу данных
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.ValidationError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.ValidationError)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationErrorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_ValidationError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_ValidationError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        message_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_ValidationError_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.message_ = message_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                message_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Путь к полю в формате наименования 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) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Путь к полю в формате наименования protobuf
       * </pre>
       *
       * <code>string path = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Путь к полю в формате наименования 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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Валидационное сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.ValidationError)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.ValidationError)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ValidationError>
        PARSER = new com.google.protobuf.AbstractParser<ValidationError>() {
      @java.lang.Override
      public ValidationError parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ValidationError> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ValidationError> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.ValidationError getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GroupTemplateNotFoundErrorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_management.v1.GroupTemplateNotFoundError)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <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.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_management.v1.GroupTemplateNotFoundError)
      GroupTemplateNotFoundErrorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GroupTemplateNotFoundError.newBuilder() to construct.
    private GroupTemplateNotFoundError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GroupTemplateNotFoundError() {
      groupTemplateId_ = "";
      message_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GroupTemplateNotFoundError();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.Builder.class);
    }

    public static final int GROUP_TEMPLATE_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object 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() {
      java.lang.Object ref = groupTemplateId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        groupTemplateId_ = s;
        return s;
      }
    }
    /**
     * <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() {
      java.lang.Object ref = groupTemplateId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupTemplateId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        message_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Сообщение
     * </pre>
     *
     * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupTemplateId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, groupTemplateId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupTemplateId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, groupTemplateId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError)) {
        return super.equals(obj);
      }
      ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError other = (ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) obj;

      if (!getGroupTemplateId()
          .equals(other.getGroupTemplateId())) return false;
      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + GROUP_TEMPLATE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getGroupTemplateId().hashCode();
      hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(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 PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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 com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, 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.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ошибки создания группы по шаблону
     * </pre>
     *
     * Protobuf type {@code keyapis.access_management.v1.GroupTemplateNotFoundError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_management.v1.GroupTemplateNotFoundError)
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundErrorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.class, ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.Builder.class);
      }

      // Construct using ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        groupTemplateId_ = "";
        message_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getDefaultInstanceForType() {
        return ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance();
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError build() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError buildPartial() {
        ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError result = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.groupTemplateId_ = groupTemplateId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.message_ = message_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError) {
          return mergeFrom((ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError other) {
        if (other == ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError.getDefaultInstance()) return this;
        if (!other.getGroupTemplateId().isEmpty()) {
          groupTemplateId_ = other.groupTemplateId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                groupTemplateId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                message_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object groupTemplateId_ = "";
      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The groupTemplateId.
       */
      public java.lang.String getGroupTemplateId() {
        java.lang.Object ref = groupTemplateId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          groupTemplateId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for groupTemplateId.
       */
      public com.google.protobuf.ByteString
          getGroupTemplateIdBytes() {
        java.lang.Object ref = groupTemplateId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupTemplateId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <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) {
        if (value == null) { throw new NullPointerException(); }
        groupTemplateId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор шаблона группы, который не найден
       * </pre>
       *
       * <code>string group_template_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearGroupTemplateId() {
        groupTemplateId_ = getDefaultInstance().getGroupTemplateId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        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) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        groupTemplateId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Сообщение
       * </pre>
       *
       * <code>string message = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.access_management.v1.GroupTemplateNotFoundError)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_management.v1.GroupTemplateNotFoundError)
    private static final ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError();
    }

    public static ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GroupTemplateNotFoundError>
        PARSER = new com.google.protobuf.AbstractParser<GroupTemplateNotFoundError>() {
      @java.lang.Override
      public GroupTemplateNotFoundError parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GroupTemplateNotFoundError> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GroupTemplateNotFoundError> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public ru.keyapis.access_management.v1.KeyapisAccessManagementV1Proto.GroupTemplateNotFoundError getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_Claim_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_Claim_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_UserGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_UserGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_Group_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_Group_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupListRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupListRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupListResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupListResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupCountRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupCountRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupCountResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupCountResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupFilter_RequirementsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupFilter_RequirementsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupFilter_ClaimsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupFilter_ClaimsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupPaging_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupPaging_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PostGroupRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PostGroupRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PostGroupResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PostGroupResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PostGroupResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PostGroupResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_DeleteGroupRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_DeleteGroupRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_DeleteGroupResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_DeleteGroupResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupUserListRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupUserListRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupUserPaging_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupUserPaging_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupUserFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupUserFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupUserListResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupUserListResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupClaimFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupClaimFilter_ClaimsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupClaimFilter_ClaimsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_ClaimsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_ClaimsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupClaimPaging_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupClaimPaging_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_ValidationError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_ValidationError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\nEkeyapis/access_management/v1/keyapis_a" +
      "ccess_management_group_v1.proto\022\034keyapis" +
      ".access_management.v1\032\034google/api/annota" +
      "tions.proto\032\037google/api/field_behavior.p" +
      "roto\032\036google/protobuf/wrappers.proto\032\037go" +
      "ogle/protobuf/timestamp.proto\"4\n\033PutGrou" +
      "pApiKeyCreateRequest\022\025\n\010group_id\030\001 \001(\tB\003" +
      "\340A\002\"6\n\034PutGroupApiKeyCreateResponse\022\016\n\004d" +
      "ata\030\001 \001(\tH\000B\006\n\004type\"4\n\033PutGroupApiKeyDel" +
      "eteRequest\022\025\n\010group_id\030\001 \001(\tB\003\340A\002\"\036\n\034Put" +
      "GroupApiKeyDeleteResponse\"(\n\005Claim\022\020\n\003ke" +
      "y\030\001 \001(\tB\003\340A\002\022\r\n\005value\030\002 \001(\t\"8\n\tUserGroup" +
      "\022\024\n\007user_id\030\001 \001(\tB\003\340A\002\022\025\n\010group_id\030\002 \001(\t" +
      "B\003\340A\002\"\352\001\n\005Group\022\n\n\002id\030\001 \001(\t\022\022\n\005title\030\002 \001" +
      "(\tB\003\340A\002\022\023\n\013description\030\003 \001(\t\0223\n\006claims\030\004" +
      " \003(\0132#.keyapis.access_management.v1.Clai" +
      "m\0229\n\014requirements\030\005 \003(\0132#.keyapis.access" +
      "_management.v1.Claim\022.\n\ndeleted_at\030\006 \001(\013" +
      "2\032.google.protobuf.Timestamp\022\014\n\004tags\030\007 \003" +
      "(\t\"\"\n\017GetGroupRequest\022\017\n\002id\030\001 \001(\tB\003\340A\002\"\356" +
      "\001\n\020GetGroupResponse\0223\n\004data\030\001 \001(\0132#.keya" +
      "pis.access_management.v1.GroupH\000\022E\n\005erro" +
      "r\030\002 \001(\01324.keyapis.access_management.v1.G" +
      "etGroupResponse.ErrorH\000\032V\n\005Error\022C\n\nvali" +
      "dation\030\001 \001(\0132-.keyapis.access_management" +
      ".v1.ValidationErrorH\000B\010\n\006reasonB\006\n\004type\"" +
      "\233\001\n\023GetGroupListRequest\0229\n\006filter\030\001 \001(\0132" +
      ").keyapis.access_management.v1.GroupFilt" +
      "er\022;\n\006paging\030\002 \001(\0132).keyapis.access_mana" +
      "gement.v1.GroupPagingH\000B\014\n\npagination\"\366\001" +
      "\n\024GetGroupListResponse\0223\n\004data\030\001 \001(\0132#.k" +
      "eyapis.access_management.v1.GroupH\000\022I\n\005e" +
      "rror\030\002 \001(\01328.keyapis.access_management.v" +
      "1.GetGroupListResponse.ErrorH\000\032V\n\005Error\022" +
      "C\n\nvalidation\030\001 \001(\0132-.keyapis.access_man" +
      "agement.v1.ValidationErrorH\000B\010\n\006reasonB\006" +
      "\n\004type\"Q\n\024GetGroupCountRequest\0229\n\006filter" +
      "\030\001 \001(\0132).keyapis.access_management.v1.Gr" +
      "oupFilter\"\323\001\n\025GetGroupCountResponse\022\016\n\004d" +
      "ata\030\001 \001(\005H\000\022J\n\005error\030\002 \001(\01329.keyapis.acc" +
      "ess_management.v1.GetGroupCountResponse." +
      "ErrorH\000\032V\n\005Error\022C\n\nvalidation\030\001 \001(\0132-.k" +
      "eyapis.access_management.v1.ValidationEr" +
      "rorH\000B\010\n\006reasonB\006\n\004type\"\331\002\n\013GroupFilter\022" +
      "\014\n\004text\030\001 \001(\t\022Q\n\014requirements\030\002 \003(\0132;.ke" +
      "yapis.access_management.v1.GroupFilter.R" +
      "equirementsEntry\022E\n\006claims\030\003 \003(\01325.keyap" +
      "is.access_management.v1.GroupFilter.Clai" +
      "msEntry\022\014\n\004tags\030\004 \003(\t\0220\n\014hide_deleted\030\005 " +
      "\001(\0132\032.google.protobuf.BoolValue\0323\n\021Requi" +
      "rementsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t" +
      ":\0028\001\032-\n\013ClaimsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005valu" +
      "e\030\002 \001(\t:\0028\001\"\310\002\n\013GroupPaging\022L\n\rorder_by_" +
      "type\030\001 \001(\01625.keyapis.access_management.v" +
      "1.GroupPaging.OrderByType\022O\n\016direction_t" +
      "ype\030\002 \001(\01627.keyapis.access_management.v1" +
      ".GroupPaging.DirectionType\022\r\n\005limit\030\003 \001(" +
      "\005\022\016\n\006offset\030\004 \001(\005\";\n\013OrderByType\022\031\n\025ORDE" +
      "R_BY_TYPE_UNKNOWN\020\000\022\006\n\002ID\020\001\022\t\n\005TITLE\020\002\">" +
      "\n\rDirectionType\022\032\n\026DIRECTION_TYPE_UNKNOW" +
      "N\020\000\022\010\n\004DESC\020\001\022\007\n\003ASC\020\002\"J\n\020PostGroupReque" +
      "st\0226\n\004data\030\001 \001(\0132#.keyapis.access_manage" +
      "ment.v1.GroupB\003\340A\002\"\227\001\n\032PostGroupByTempla" +
      "teRequest\022\036\n\021group_template_id\030\001 \001(\tB\003\340A" +
      "\002\022\030\n\013group_title\030\002 \001(\tB\003\340A\002\022?\n\022group_req" +
      "uirements\030\003 \003(\0132#.keyapis.access_managem" +
      "ent.v1.Claim\"\360\001\n\021PostGroupResponse\0223\n\004da" +
      "ta\030\001 \001(\0132#.keyapis.access_management.v1." +
      "GroupH\000\022F\n\005error\030\002 \001(\01325.keyapis.access_" +
      "management.v1.PostGroupResponse.ErrorH\000\032" +
      "V\n\005Error\022C\n\nvalidation\030\001 \001(\0132-.keyapis.a" +
      "ccess_management.v1.ValidationErrorH\000B\010\n" +
      "\006reasonB\006\n\004type\"\351\002\n\033PostGroupByTemplateR" +
      "esponse\0223\n\004data\030\001 \001(\0132#.keyapis.access_m" +
      "anagement.v1.GroupH\000\022P\n\005error\030\002 \001(\0132?.ke" +
      "yapis.access_management.v1.PostGroupByTe" +
      "mplateResponse.ErrorH\000\032\272\001\n\005Error\022C\n\nvali" +
      "dation\030\001 \001(\0132-.keyapis.access_management" +
      ".v1.ValidationErrorH\000\022b\n\036group_template_" +
      "not_found_error\030\002 \001(\01328.keyapis.access_m" +
      "anagement.v1.GroupTemplateNotFoundErrorH" +
      "\000B\010\n\006reasonB\006\n\004type\"%\n\022DeleteGroupReques" +
      "t\022\017\n\002id\030\001 \001(\tB\003\340A\002\"\025\n\023DeleteGroupRespons" +
      "e\"]\n\031PutGroupUserAttachRequest\022@\n\nuser_g" +
      "roup\030\001 \001(\0132\'.keyapis.access_management.v" +
      "1.UserGroupB\003\340A\002\"\034\n\032PutGroupUserAttachRe" +
      "sponse\"]\n\031PutGroupUserDetachRequest\022@\n\nu" +
      "ser_group\030\001 \001(\0132\'.keyapis.access_managem" +
      "ent.v1.UserGroupB\003\340A\002\"\247\001\n\027GetGroupUserLi" +
      "stRequest\022=\n\006filter\030\001 \001(\0132-.keyapis.acce" +
      "ss_management.v1.GroupUserFilter\022?\n\006pagi" +
      "ng\030\002 \001(\0132-.keyapis.access_management.v1." +
      "GroupUserPagingH\000B\014\n\npagination\"\334\002\n\017Grou" +
      "pUserPaging\022P\n\rorder_by_type\030\001 \001(\01629.key" +
      "apis.access_management.v1.GroupUserPagin" +
      "g.OrderByType\022S\n\016direction_type\030\002 \001(\0162;." +
      "keyapis.access_management.v1.GroupUserPa" +
      "ging.DirectionType\022\r\n\005limit\030\003 \001(\005\022\016\n\006off" +
      "set\030\004 \001(\005\"C\n\013OrderByType\022\031\n\025ORDER_BY_TYP" +
      "E_UNKNOWN\020\000\022\014\n\010GROUP_ID\020\001\022\013\n\007USER_ID\020\002\">" +
      "\n\rDirectionType\022\032\n\026DIRECTION_TYPE_UNKNOW" +
      "N\020\000\022\010\n\004DESC\020\001\022\007\n\003ASC\020\002\"6\n\017GroupUserFilte" +
      "r\022\021\n\tgroup_ids\030\001 \003(\t\022\020\n\010user_ids\030\002 \003(\t\"[" +
      "\n\030GetGroupUserListResponse\0227\n\004data\030\001 \001(\013" +
      "2\'.keyapis.access_management.v1.UserGrou" +
      "pH\000B\006\n\004type\"Y\n\030GetGroupUserCountRequest\022" +
      "=\n\006filter\030\001 \001(\0132-.keyapis.access_managem" +
      "ent.v1.GroupUserFilter\"3\n\031GetGroupUserCo" +
      "untResponse\022\016\n\004data\030\001 \001(\005H\000B\006\n\004type\"\034\n\032P" +
      "utGroupUserDetachResponse\"[\n\031GetGroupCla" +
      "imCountRequest\022>\n\006filter\030\001 \001(\0132..keyapis" +
      ".access_management.v1.GroupClaimFilter\"4" +
      "\n\032GetGroupClaimCountResponse\022\016\n\004data\030\001 \001" +
      "(\005H\000B\006\n\004type\"[\n\031GetGroupClaimExistReques" +
      "t\022>\n\006filter\030\001 \001(\0132..keyapis.access_manag" +
      "ement.v1.GroupClaimFilter\"\246\002\n\032GetGroupCl" +
      "aimExistResponse\022\016\n\004data\030\001 \001(\010H\000\022O\n\005erro" +
      "r\030\002 \001(\0132>.keyapis.access_management.v1.G" +
      "etGroupClaimExistResponse.ErrorH\000\032\236\001\n\005Er" +
      "ror\022r\n\022claim_filter_empty\030\001 \001(\0132T.keyapi" +
      "s.access_management.v1.GetGroupClaimExis" +
      "tResponse.Error.ClaimFilterEmptyErrorH\000\032" +
      "\027\n\025ClaimFilterEmptyErrorB\010\n\006reasonB\006\n\004ty" +
      "pe\"\252\001\n\030GetGroupClaimListRequest\022>\n\006filte" +
      "r\030\001 \001(\0132..keyapis.access_management.v1.G" +
      "roupClaimFilter\022@\n\006paging\030\002 \001(\0132..keyapi" +
      "s.access_management.v1.GroupClaimPagingH" +
      "\000B\014\n\npagination\"X\n\031GetGroupClaimListResp" +
      "onse\0223\n\004data\030\001 \001(\0132#.keyapis.access_mana" +
      "gement.v1.ClaimH\000B\006\n\004type\"\257\003\n\020GroupClaim" +
      "Filter\022-\n\007user_id\030\001 \001(\0132\034.google.protobu" +
      "f.StringValue\022J\n\006claims\030\002 \003(\0132:.keyapis." +
      "access_management.v1.GroupClaimFilter.Cl" +
      "aimsEntry\022J\n\tuser_data\030\003 \001(\01327.keyapis.a" +
      "ccess_management.v1.GroupClaimFilter.Use" +
      "rData\022\024\n\014api_key_hash\030\004 \001(\t\032-\n\013ClaimsEnt" +
      "ry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\032\216\001\n\010U" +
      "serData\022S\n\006claims\030\001 \003(\0132C.keyapis.access" +
      "_management.v1.GroupClaimFilter.UserData" +
      ".ClaimsEntry\032-\n\013ClaimsEntry\022\013\n\003key\030\001 \001(\t" +
      "\022\r\n\005value\030\002 \001(\t:\0028\001\"\330\002\n\020GroupClaimPaging" +
      "\022Q\n\rorder_by_type\030\001 \001(\0162:.keyapis.access" +
      "_management.v1.GroupClaimPaging.OrderByT" +
      "ype\022T\n\016direction_type\030\002 \001(\0162<.keyapis.ac" +
      "cess_management.v1.GroupClaimPaging.Dire" +
      "ctionType\022\r\n\005limit\030\003 \001(\005\022\016\n\006offset\030\004 \001(\005" +
      "\"<\n\013OrderByType\022\031\n\025ORDER_BY_TYPE_UNKNOWN" +
      "\020\000\022\007\n\003KEY\020\001\022\t\n\005VALUE\020\002\">\n\rDirectionType\022" +
      "\032\n\026DIRECTION_TYPE_UNKNOWN\020\000\022\010\n\004DESC\020\001\022\007\n" +
      "\003ASC\020\002\":\n\017ValidationError\022\021\n\004path\030\001 \001(\tB" +
      "\003\340A\002\022\024\n\007message\030\002 \001(\tB\003\340A\002\"R\n\032GroupTempl" +
      "ateNotFoundError\022\036\n\021group_template_id\030\001 " +
      "\001(\tB\003\340A\002\022\024\n\007message\030\002 \001(\tB\003\340A\0022\246\026\n\014Group" +
      "Service\022\227\001\n\010GetGroup\022-.keyapis.access_ma" +
      "nagement.v1.GetGroupRequest\032..keyapis.ac" +
      "cess_management.v1.GetGroupResponse\",\202\323\344" +
      "\223\002&\022$/access_management/api/v1/group/{id" +
      "}\022\245\001\n\014GetGroupList\0221.keyapis.access_mana" +
      "gement.v1.GetGroupListRequest\0322.keyapis." +
      "access_management.v1.GetGroupListRespons" +
      "e\",\202\323\344\223\002&\022$/access_management/api/v1/gro" +
      "up/list0\001\022\247\001\n\rGetGroupCount\0222.keyapis.ac" +
      "cess_management.v1.GetGroupCountRequest\032" +
      "3.keyapis.access_management.v1.GetGroupC" +
      "ountResponse\"-\202\323\344\223\002\'\022%/access_management" +
      "/api/v1/group/count\022\230\001\n\tPostGroup\022..keya" +
      "pis.access_management.v1.PostGroupReques" +
      "t\032/.keyapis.access_management.v1.PostGro" +
      "upResponse\"*\202\323\344\223\002$\"\037/access_management/a" +
      "pi/v1/group:\001*\022\240\001\n\013DeleteGroup\0220.keyapis" +
      ".access_management.v1.DeleteGroupRequest" +
      "\0321.keyapis.access_management.v1.DeleteGr" +
      "oupResponse\",\202\323\344\223\002&*$/access_management/" +
      "api/v1/group/{id}\022\302\001\n\023PostGroupByTemplat" +
      "e\0228.keyapis.access_management.v1.PostGro" +
      "upByTemplateRequest\0329.keyapis.access_man" +
      "agement.v1.PostGroupByTemplateResponse\"6" +
      "\202\323\344\223\0020\"+/access_management/api/v1/group/" +
      "by_template:\001*\022\347\001\n\022PutGroupUserAttach\0227." +
      "keyapis.access_management.v1.PutGroupUse" +
      "rAttachRequest\0328.keyapis.access_manageme" +
      "nt.v1.PutGroupUserAttachResponse\"^\202\323\344\223\002X" +
      "\032V/access_management/api/v1/group/{user_" +
      "group.group_id}/user/{user_group.user_id" +
      "}/attach\022\347\001\n\022PutGroupUserDetach\0227.keyapi" +
      "s.access_management.v1.PutGroupUserDetac" +
      "hRequest\0328.keyapis.access_management.v1." +
      "PutGroupUserDetachResponse\"^\202\323\344\223\002X\032V/acc" +
      "ess_management/api/v1/group/{user_group." +
      "group_id}/user/{user_group.user_id}/deta" +
      "ch\022\266\001\n\020GetGroupUserList\0225.keyapis.access" +
      "_management.v1.GetGroupUserListRequest\0326" +
      ".keyapis.access_management.v1.GetGroupUs" +
      "erListResponse\"1\202\323\344\223\002+\022)/access_manageme" +
      "nt/api/v1/group/user/list0\001\022\270\001\n\021GetGroup" +
      "UserCount\0226.keyapis.access_management.v1" +
      ".GetGroupUserCountRequest\0327.keyapis.acce" +
      "ss_management.v1.GetGroupUserCountRespon" +
      "se\"2\202\323\344\223\002,\022*/access_management/api/v1/gr" +
      "oup/user/count\022\272\001\n\021GetGroupClaimList\0226.k" +
      "eyapis.access_management.v1.GetGroupClai" +
      "mListRequest\0327.keyapis.access_management" +
      ".v1.GetGroupClaimListResponse\"2\202\323\344\223\002,\022*/" +
      "access_management/api/v1/group/claim/lis" +
      "t0\001\022\274\001\n\022GetGroupClaimCount\0227.keyapis.acc" +
      "ess_management.v1.GetGroupClaimCountRequ" +
      "est\0328.keyapis.access_management.v1.GetGr" +
      "oupClaimCountResponse\"3\202\323\344\223\002-\022+/access_m" +
      "anagement/api/v1/group/claim/count\022\274\001\n\022G" +
      "etGroupClaimExist\0227.keyapis.access_manag" +
      "ement.v1.GetGroupClaimExistRequest\0328.key" +
      "apis.access_management.v1.GetGroupClaimE" +
      "xistResponse\"3\202\323\344\223\002-\022+/access_management" +
      "/api/v1/group/claim/exist\022\320\001\n\024PutGroupAp" +
      "iKeyCreate\0229.keyapis.access_management.v" +
      "1.PutGroupApiKeyCreateRequest\032:.keyapis." +
      "access_management.v1.PutGroupApiKeyCreat" +
      "eResponse\"A\202\323\344\223\002;\0329/access_management/ap" +
      "i/v1/group/{group_id}/api_key/create\022\320\001\n" +
      "\024PutGroupApiKeyDelete\0229.keyapis.access_m" +
      "anagement.v1.PutGroupApiKeyDeleteRequest" +
      "\032:.keyapis.access_management.v1.PutGroup" +
      "ApiKeyDeleteResponse\"A\202\323\344\223\002;\0329/access_ma" +
      "nagement/api/v1/group/{group_id}/api_key" +
      "/deleteB\342\001\n\037ru.keyapis.access_management" +
      ".v1B\036KeyapisAccessManagementV1ProtoH\003P\000Z" +
      "\035/keyapis_access_management_v1\330\001\001\370\001\001\242\002\031K" +
      "EYAPISACCESSMANAGEMENTV1\252\002\033Keyapis.Acces" +
      "sManagement.V1\312\002\033Keyapis\\AccessManagemen" +
      "t\\V1\352\002\035Keyapis::AccessManagement::V1b\006pr" +
      "oto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.api.AnnotationsProto.getDescriptor(),
          com.google.api.FieldBehaviorProto.getDescriptor(),
          com.google.protobuf.WrappersProto.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
        });
    internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateRequest_descriptor,
        new java.lang.String[] { "GroupId", });
    internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupApiKeyCreateResponse_descriptor,
        new java.lang.String[] { "Data", "Type", });
    internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteRequest_descriptor,
        new java.lang.String[] { "GroupId", });
    internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupApiKeyDeleteResponse_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_access_management_v1_Claim_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_keyapis_access_management_v1_Claim_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_Claim_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_keyapis_access_management_v1_UserGroup_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_keyapis_access_management_v1_UserGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_UserGroup_descriptor,
        new java.lang.String[] { "UserId", "GroupId", });
    internal_static_keyapis_access_management_v1_Group_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_keyapis_access_management_v1_Group_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_Group_descriptor,
        new java.lang.String[] { "Id", "Title", "Description", "Claims", "Requirements", "DeletedAt", "Tags", });
    internal_static_keyapis_access_management_v1_GetGroupRequest_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_keyapis_access_management_v1_GetGroupRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupRequest_descriptor,
        new java.lang.String[] { "Id", });
    internal_static_keyapis_access_management_v1_GetGroupResponse_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_keyapis_access_management_v1_GetGroupResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_access_management_v1_GetGroupResponse_Error_descriptor =
      internal_static_keyapis_access_management_v1_GetGroupResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GetGroupResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_access_management_v1_GetGroupListRequest_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_keyapis_access_management_v1_GetGroupListRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupListRequest_descriptor,
        new java.lang.String[] { "Filter", "Paging", "Pagination", });
    internal_static_keyapis_access_management_v1_GetGroupListResponse_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_keyapis_access_management_v1_GetGroupListResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupListResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_descriptor =
      internal_static_keyapis_access_management_v1_GetGroupListResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupListResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_access_management_v1_GetGroupCountRequest_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_keyapis_access_management_v1_GetGroupCountRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupCountRequest_descriptor,
        new java.lang.String[] { "Filter", });
    internal_static_keyapis_access_management_v1_GetGroupCountResponse_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_keyapis_access_management_v1_GetGroupCountResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupCountResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_descriptor =
      internal_static_keyapis_access_management_v1_GetGroupCountResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupCountResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_access_management_v1_GroupFilter_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_keyapis_access_management_v1_GroupFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupFilter_descriptor,
        new java.lang.String[] { "Text", "Requirements", "Claims", "Tags", "HideDeleted", });
    internal_static_keyapis_access_management_v1_GroupFilter_RequirementsEntry_descriptor =
      internal_static_keyapis_access_management_v1_GroupFilter_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GroupFilter_RequirementsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupFilter_RequirementsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_keyapis_access_management_v1_GroupFilter_ClaimsEntry_descriptor =
      internal_static_keyapis_access_management_v1_GroupFilter_descriptor.getNestedTypes().get(1);
    internal_static_keyapis_access_management_v1_GroupFilter_ClaimsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupFilter_ClaimsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_keyapis_access_management_v1_GroupPaging_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_keyapis_access_management_v1_GroupPaging_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupPaging_descriptor,
        new java.lang.String[] { "OrderByType", "DirectionType", "Limit", "Offset", });
    internal_static_keyapis_access_management_v1_PostGroupRequest_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_keyapis_access_management_v1_PostGroupRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PostGroupRequest_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PostGroupByTemplateRequest_descriptor,
        new java.lang.String[] { "GroupTemplateId", "GroupTitle", "GroupRequirements", });
    internal_static_keyapis_access_management_v1_PostGroupResponse_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_keyapis_access_management_v1_PostGroupResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PostGroupResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_access_management_v1_PostGroupResponse_Error_descriptor =
      internal_static_keyapis_access_management_v1_PostGroupResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_PostGroupResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PostGroupResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_descriptor =
      internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PostGroupByTemplateResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "GroupTemplateNotFoundError", "Reason", });
    internal_static_keyapis_access_management_v1_DeleteGroupRequest_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_keyapis_access_management_v1_DeleteGroupRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_DeleteGroupRequest_descriptor,
        new java.lang.String[] { "Id", });
    internal_static_keyapis_access_management_v1_DeleteGroupResponse_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_keyapis_access_management_v1_DeleteGroupResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_DeleteGroupResponse_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupUserAttachRequest_descriptor,
        new java.lang.String[] { "UserGroup", });
    internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupUserAttachResponse_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupUserDetachRequest_descriptor,
        new java.lang.String[] { "UserGroup", });
    internal_static_keyapis_access_management_v1_GetGroupUserListRequest_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_keyapis_access_management_v1_GetGroupUserListRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupUserListRequest_descriptor,
        new java.lang.String[] { "Filter", "Paging", "Pagination", });
    internal_static_keyapis_access_management_v1_GroupUserPaging_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_keyapis_access_management_v1_GroupUserPaging_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupUserPaging_descriptor,
        new java.lang.String[] { "OrderByType", "DirectionType", "Limit", "Offset", });
    internal_static_keyapis_access_management_v1_GroupUserFilter_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_keyapis_access_management_v1_GroupUserFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupUserFilter_descriptor,
        new java.lang.String[] { "GroupIds", "UserIds", });
    internal_static_keyapis_access_management_v1_GetGroupUserListResponse_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_keyapis_access_management_v1_GetGroupUserListResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupUserListResponse_descriptor,
        new java.lang.String[] { "Data", "Type", });
    internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupUserCountRequest_descriptor,
        new java.lang.String[] { "Filter", });
    internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupUserCountResponse_descriptor,
        new java.lang.String[] { "Data", "Type", });
    internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_PutGroupUserDetachResponse_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimCountRequest_descriptor,
        new java.lang.String[] { "Filter", });
    internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimCountResponse_descriptor,
        new java.lang.String[] { "Data", "Type", });
    internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimExistRequest_descriptor,
        new java.lang.String[] { "Filter", });
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_descriptor =
      internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_descriptor,
        new java.lang.String[] { "ClaimFilterEmpty", "Reason", });
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_descriptor =
      internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimExistResponse_Error_ClaimFilterEmptyError_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimListRequest_descriptor,
        new java.lang.String[] { "Filter", "Paging", "Pagination", });
    internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GetGroupClaimListResponse_descriptor,
        new java.lang.String[] { "Data", "Type", });
    internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_keyapis_access_management_v1_GroupClaimFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor,
        new java.lang.String[] { "UserId", "Claims", "UserData", "ApiKeyHash", });
    internal_static_keyapis_access_management_v1_GroupClaimFilter_ClaimsEntry_descriptor =
      internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GroupClaimFilter_ClaimsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupClaimFilter_ClaimsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_descriptor =
      internal_static_keyapis_access_management_v1_GroupClaimFilter_descriptor.getNestedTypes().get(1);
    internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_descriptor,
        new java.lang.String[] { "Claims", });
    internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_ClaimsEntry_descriptor =
      internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_ClaimsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupClaimFilter_UserData_ClaimsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_keyapis_access_management_v1_GroupClaimPaging_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_keyapis_access_management_v1_GroupClaimPaging_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupClaimPaging_descriptor,
        new java.lang.String[] { "OrderByType", "DirectionType", "Limit", "Offset", });
    internal_static_keyapis_access_management_v1_ValidationError_descriptor =
      getDescriptor().getMessageTypes().get(39);
    internal_static_keyapis_access_management_v1_ValidationError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_ValidationError_descriptor,
        new java.lang.String[] { "Path", "Message", });
    internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_descriptor =
      getDescriptor().getMessageTypes().get(40);
    internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_management_v1_GroupTemplateNotFoundError_descriptor,
        new java.lang.String[] { "GroupTemplateId", "Message", });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.google.api.FieldBehaviorProto.fieldBehavior);
    registry.add(com.google.api.AnnotationsProto.http);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.google.api.AnnotationsProto.getDescriptor();
    com.google.api.FieldBehaviorProto.getDescriptor();
    com.google.protobuf.WrappersProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
