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

package ru.keyapis.access_control.v1;

public final class KeyapisAccessControlV1Proto {
  private KeyapisAccessControlV1Proto() {}
  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 RoomUserOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_control.v1.RoomUser)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * ОРПОН дома
     * </pre>
     *
     * <code>int64 orpon = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The orpon.
     */
    long getOrpon();

    /**
     * <pre>
     * Номер квартиры.
     * # Диапазон: 1..4
     * </pre>
     *
     * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The roomNumber.
     */
    java.lang.String getRoomNumber();
    /**
     * <pre>
     * Номер квартиры.
     * # Диапазон: 1..4
     * </pre>
     *
     * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for roomNumber.
     */
    com.google.protobuf.ByteString
        getRoomNumberBytes();

    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    int getUserId();
  }
  /**
   * <pre>
   * Связь помещения и пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.access_control.v1.RoomUser}
   */
  public static final class RoomUser extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_control.v1.RoomUser)
      RoomUserOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoomUser.newBuilder() to construct.
    private RoomUser(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RoomUser() {
      roomNumber_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUser_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUser_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.Builder.class);
    }

    public static final int ORPON_FIELD_NUMBER = 1;
    private long orpon_ = 0L;
    /**
     * <pre>
     * ОРПОН дома
     * </pre>
     *
     * <code>int64 orpon = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The orpon.
     */
    @java.lang.Override
    public long getOrpon() {
      return orpon_;
    }

    public static final int ROOM_NUMBER_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object roomNumber_ = "";
    /**
     * <pre>
     * Номер квартиры.
     * # Диапазон: 1..4
     * </pre>
     *
     * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The roomNumber.
     */
    @java.lang.Override
    public java.lang.String getRoomNumber() {
      java.lang.Object ref = roomNumber_;
      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();
        roomNumber_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Номер квартиры.
     * # Диапазон: 1..4
     * </pre>
     *
     * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for roomNumber.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRoomNumberBytes() {
      java.lang.Object ref = roomNumber_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        roomNumber_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USER_ID_FIELD_NUMBER = 3;
    private int userId_ = 0;
    /**
     * <pre>
     * Идентификатор пользователя.
     * # Диапазон: 1..2147483647
     * </pre>
     *
     * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    @java.lang.Override
    public int getUserId() {
      return userId_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (orpon_ != 0L) {
        output.writeInt64(1, orpon_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomNumber_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, roomNumber_);
      }
      if (userId_ != 0) {
        output.writeInt32(3, userId_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (orpon_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, orpon_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(roomNumber_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, roomNumber_);
      }
      if (userId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, userId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (getOrpon()
          != other.getOrpon()) return false;
      if (!getRoomNumber()
          .equals(other.getRoomNumber())) return false;
      if (getUserId()
          != other.getUserId()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ORPON_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOrpon());
      hash = (37 * hash) + ROOM_NUMBER_FIELD_NUMBER;
      hash = (53 * hash) + getRoomNumber().hashCode();
      hash = (37 * hash) + USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserId();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser 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_control.v1.KeyapisAccessControlV1Proto.RoomUser parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser 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_control.v1.KeyapisAccessControlV1Proto.RoomUser 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_control.v1.RoomUser}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.RoomUser)
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUser_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUser_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.Builder.class);
      }

      // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUser_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser getDefaultInstanceForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.orpon_ = orpon_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.roomNumber_ = roomNumber_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.userId_ = userId_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser other) {
        if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance()) return this;
        if (other.getOrpon() != 0L) {
          setOrpon(other.getOrpon());
        }
        if (!other.getRoomNumber().isEmpty()) {
          roomNumber_ = other.roomNumber_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.getUserId() != 0) {
          setUserId(other.getUserId());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                orpon_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                roomNumber_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                userId_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              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 long orpon_ ;
      /**
       * <pre>
       * ОРПОН дома
       * </pre>
       *
       * <code>int64 orpon = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The orpon.
       */
      @java.lang.Override
      public long getOrpon() {
        return orpon_;
      }
      /**
       * <pre>
       * ОРПОН дома
       * </pre>
       *
       * <code>int64 orpon = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The orpon to set.
       * @return This builder for chaining.
       */
      public Builder setOrpon(long value) {

        orpon_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ОРПОН дома
       * </pre>
       *
       * <code>int64 orpon = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearOrpon() {
        bitField0_ = (bitField0_ & ~0x00000001);
        orpon_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object roomNumber_ = "";
      /**
       * <pre>
       * Номер квартиры.
       * # Диапазон: 1..4
       * </pre>
       *
       * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The roomNumber.
       */
      public java.lang.String getRoomNumber() {
        java.lang.Object ref = roomNumber_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          roomNumber_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Номер квартиры.
       * # Диапазон: 1..4
       * </pre>
       *
       * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for roomNumber.
       */
      public com.google.protobuf.ByteString
          getRoomNumberBytes() {
        java.lang.Object ref = roomNumber_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          roomNumber_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Номер квартиры.
       * # Диапазон: 1..4
       * </pre>
       *
       * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The roomNumber to set.
       * @return This builder for chaining.
       */
      public Builder setRoomNumber(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        roomNumber_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Номер квартиры.
       * # Диапазон: 1..4
       * </pre>
       *
       * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearRoomNumber() {
        roomNumber_ = getDefaultInstance().getRoomNumber();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Номер квартиры.
       * # Диапазон: 1..4
       * </pre>
       *
       * <code>string room_number = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for roomNumber to set.
       * @return This builder for chaining.
       */
      public Builder setRoomNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        roomNumber_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int userId_ ;
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userId.
       */
      @java.lang.Override
      public int getUserId() {
        return userId_;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The userId to set.
       * @return This builder for chaining.
       */
      public Builder setUserId(int value) {

        userId_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя.
       * # Диапазон: 1..2147483647
       * </pre>
       *
       * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearUserId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        userId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.access_control.v1.RoomUser)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.RoomUser)
    private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser();
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RoomUser>
        PARSER = new com.google.protobuf.AbstractParser<RoomUser>() {
      @java.lang.Override
      public RoomUser 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<RoomUser> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetRoomUserListRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_control.v1.GetRoomUserListRequest)
      com.google.protobuf.MessageOrBuilder {

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

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

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

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest.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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     * @return The filter.
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance() : filter_;
    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
     * @return The paging.
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging getPaging() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) pagination_;
      }
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.getDefaultInstance();
    }
    /**
     * <pre>
     * Стандартный постраничный вывод
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPagingOrBuilder getPagingOrBuilder() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) pagination_;
      }
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest other = (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest) 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest 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_control.v1.GetRoomUserListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.GetRoomUserListRequest)
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest.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_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest getDefaultInstanceForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest.getDefaultInstance();
      }

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

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

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

      private void buildPartialOneofs(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest) {
          return mergeFrom((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest other) {
        if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest.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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.RoomUserFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter 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_control.v1.RoomUserFilter filter = 1;</code>
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPagingOrBuilder> pagingBuilder_;
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
       * @return Whether the paging field is set.
       */
      @java.lang.Override
      public boolean hasPaging() {
        return paginationCase_ == 2;
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
       * @return The paging.
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging getPaging() {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2) {
            return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) pagination_;
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.getDefaultInstance();
        } else {
          if (paginationCase_ == 2) {
            return pagingBuilder_.getMessage();
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.RoomUserPaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.Builder builderForValue) {
        if (pagingBuilder_ == null) {
          pagination_ = builderForValue.build();
          onChanged();
        } else {
          pagingBuilder_.setMessage(builderForValue.build());
        }
        paginationCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging value) {
        if (pagingBuilder_ == null) {
          if (paginationCase_ == 2 &&
              pagination_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.getDefaultInstance()) {
            pagination_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.newBuilder((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) 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_control.v1.RoomUserPaging 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_control.v1.RoomUserPaging paging = 2;</code>
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.Builder getPagingBuilder() {
        return getPagingFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPagingOrBuilder getPagingOrBuilder() {
        if ((paginationCase_ == 2) && (pagingBuilder_ != null)) {
          return pagingBuilder_.getMessageOrBuilder();
        } else {
          if (paginationCase_ == 2) {
            return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) pagination_;
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Стандартный постраничный вывод
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging paging = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPagingOrBuilder> 
          getPagingFieldBuilder() {
        if (pagingBuilder_ == null) {
          if (!(paginationCase_ == 2)) {
            pagination_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.getDefaultInstance();
          }
          pagingBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPagingOrBuilder>(
                  (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) 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_control.v1.GetRoomUserListRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.GetRoomUserListRequest)
    private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest();
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetRoomUserListRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetRoomUserListRequest>() {
      @java.lang.Override
      public GetRoomUserListRequest 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<GetRoomUserListRequest> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetRoomUserListResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_control.v1.GetRoomUserListResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Связь помещения и пользователя
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Связь помещения и пользователя
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
     * @return The data.
     */
    ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser getData();
    /**
     * <pre>
     * Связь помещения и пользователя
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
     */
    ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserOrBuilder getDataOrBuilder();

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

    ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения списка связей помещений и пользователей
   * </pre>
   *
   * Protobuf type {@code keyapis.access_control.v1.GetRoomUserListResponse}
   */
  public static final class GetRoomUserListResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_control.v1.GetRoomUserListResponse)
      GetRoomUserListResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetRoomUserListResponse.newBuilder() to construct.
    private GetRoomUserListResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetRoomUserListResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Builder.class);
    }

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

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

      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * Protobuf type {@code keyapis.access_control.v1.GetRoomUserListResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.access_control.v1.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.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_control.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.access_control.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.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_control.v1.KeyapisAccessControlV1Proto.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_control.v1.KeyapisAccessControlV1Proto.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error)) {
          return super.equals(obj);
        }
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error other = (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.GetRoomUserListResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.GetRoomUserListResponse.Error)
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.getDefaultInstance();
        }

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

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

        private void buildPartial0(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error) {
            return mergeFrom((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error other) {
          if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.ValidationError, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_control.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_control.v1.ValidationError validation = 1;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return validationBuilder_.getMessage();
            }
            return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_control.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.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_control.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_control.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.newBuilder((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.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_control.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_control.v1.ValidationError validation = 1;</code>
         */
        public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_control.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 1) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError) reason_;
            }
            return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.access_control.v1.ValidationError validation = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationError.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.ValidationErrorOrBuilder>(
                    (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.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_control.v1.GetRoomUserListResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.GetRoomUserListResponse.Error)
      private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error();
      }

      public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.RoomUser data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Связь помещения и пользователя
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser getData() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser) type_;
      }
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance();
    }
    /**
     * <pre>
     * Связь помещения и пользователя
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser) type_;
      }
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_control.v1.GetRoomUserListResponse.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_control.v1.GetRoomUserListResponse.Error error = 2;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error) type_;
      }
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.access_control.v1.GetRoomUserListResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error) type_;
      }
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.RoomUser) type_);
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.RoomUser) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse other = (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse) 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse 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_control.v1.GetRoomUserListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.GetRoomUserListResponse)
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserListResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse getDefaultInstanceForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse) {
          return mergeFrom((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse other) {
        if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.KeyapisAccessControlV1Proto.RoomUser, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Связь помещения и пользователя
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Связь помещения и пользователя
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser) type_;
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Связь помещения и пользователя
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
       */
      public Builder setData(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser 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_control.v1.RoomUser data = 1;</code>
       */
      public Builder setData(
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Связь помещения и пользователя
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
       */
      public Builder mergeData(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser value) {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance()) {
            type_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.newBuilder((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser) 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_control.v1.RoomUser 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_control.v1.RoomUser data = 1;</code>
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Связь помещения и пользователя
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser) type_;
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Связь помещения и пользователя
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUser data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserOrBuilder>(
                  (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUser) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_control.v1.GetRoomUserListResponse.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_control.v1.GetRoomUserListResponse.Error error = 2;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error) type_;
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 2) {
            return errorBuilder_.getMessage();
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_control.v1.GetRoomUserListResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.GetRoomUserListResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_control.v1.GetRoomUserListResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2 &&
              type_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.getDefaultInstance()) {
            type_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.newBuilder((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.GetRoomUserListResponse.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_control.v1.GetRoomUserListResponse.Error error = 2;</code>
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_control.v1.GetRoomUserListResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 2) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 2) {
            return (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error) type_;
          }
          return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.access_control.v1.GetRoomUserListResponse.Error error = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 2)) {
            type_ = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.Error.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.ErrorOrBuilder>(
                  (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse.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_control.v1.GetRoomUserListResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.GetRoomUserListResponse)
    private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse();
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetRoomUserListResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetRoomUserListResponse>() {
      @java.lang.Override
      public GetRoomUserListResponse 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<GetRoomUserListResponse> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserListResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetRoomUserCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_control.v1.GetRoomUserCountRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     */
    ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder getFilterOrBuilder();
  }
  /**
   * <pre>
   * Запрос получения количества связей помещений и пользователей
   * </pre>
   *
   * Protobuf type {@code keyapis.access_control.v1.GetRoomUserCountRequest}
   */
  public static final class GetRoomUserCountRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_control.v1.GetRoomUserCountRequest)
      GetRoomUserCountRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetRoomUserCountRequest.newBuilder() to construct.
    private GetRoomUserCountRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetRoomUserCountRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest.Builder.class);
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     * @return The filter.
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getFilter() {
      return filter_ == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest)) {
        return super.equals(obj);
      }
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest other = (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest) 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest 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_control.v1.GetRoomUserCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.GetRoomUserCountRequest)
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest.Builder.class);
      }

      // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest.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_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest getDefaultInstanceForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest) {
          return mergeFrom((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest other) {
        if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest.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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder> filterBuilder_;
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       * @return The filter.
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.RoomUserFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            filter_ != null &&
            filter_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance()) {
            getFilterBuilder().mergeFrom(value);
          } else {
            filter_ = value;
          }
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter 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_control.v1.RoomUserFilter filter = 1;</code>
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserFilter filter = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder>(
                  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_control.v1.GetRoomUserCountRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.GetRoomUserCountRequest)
    private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest();
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetRoomUserCountRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetRoomUserCountRequest>() {
      @java.lang.Override
      public GetRoomUserCountRequest 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<GetRoomUserCountRequest> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetRoomUserCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_control.v1.GetRoomUserCountResponse)
      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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения количества связей помещений и пользователей
   * </pre>
   *
   * Protobuf type {@code keyapis.access_control.v1.GetRoomUserCountResponse}
   */
  public static final class GetRoomUserCountResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_control.v1.GetRoomUserCountResponse)
      GetRoomUserCountResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetRoomUserCountResponse.newBuilder() to construct.
    private GetRoomUserCountResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetRoomUserCountResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse)) {
        return super.equals(obj);
      }
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse other = (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse) 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse 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_control.v1.GetRoomUserCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.GetRoomUserCountResponse)
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.Builder.class);
      }

      // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.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_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse getDefaultInstanceForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse 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_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse) {
          return mergeFrom((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse other) {
        if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse.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_control.v1.GetRoomUserCountResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.GetRoomUserCountResponse)
    private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse();
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetRoomUserCountResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetRoomUserCountResponse>() {
      @java.lang.Override
      public GetRoomUserCountResponse 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<GetRoomUserCountResponse> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.GetRoomUserCountResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoomUserFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_control.v1.RoomUserFilter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * По ОРПОНам
     * </pre>
     *
     * <code>repeated int64 orpons = 1;</code>
     * @return A list containing the orpons.
     */
    java.util.List<java.lang.Long> getOrponsList();
    /**
     * <pre>
     * По ОРПОНам
     * </pre>
     *
     * <code>repeated int64 orpons = 1;</code>
     * @return The count of orpons.
     */
    int getOrponsCount();
    /**
     * <pre>
     * По ОРПОНам
     * </pre>
     *
     * <code>repeated int64 orpons = 1;</code>
     * @param index The index of the element to return.
     * @return The orpons at the given index.
     */
    long getOrpons(int index);

    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @return A list containing the roomNumbers.
     */
    java.util.List<java.lang.String>
        getRoomNumbersList();
    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @return The count of roomNumbers.
     */
    int getRoomNumbersCount();
    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @param index The index of the element to return.
     * @return The roomNumbers at the given index.
     */
    java.lang.String getRoomNumbers(int index);
    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the roomNumbers at the given index.
     */
    com.google.protobuf.ByteString
        getRoomNumbersBytes(int index);

    /**
     * <pre>
     * По идентификаторам пользователей
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @return A list containing the userIds.
     */
    java.util.List<java.lang.Integer> getUserIdsList();
    /**
     * <pre>
     * По идентификаторам пользователей
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @return The count of userIds.
     */
    int getUserIdsCount();
    /**
     * <pre>
     * По идентификаторам пользователей
     * </pre>
     *
     * <code>repeated int32 user_ids = 3;</code>
     * @param index The index of the element to return.
     * @return The userIds at the given index.
     */
    int getUserIds(int index);
  }
  /**
   * <pre>
   * Фильтр по связям помещений и пользователей
   * </pre>
   *
   * Protobuf type {@code keyapis.access_control.v1.RoomUserFilter}
   */
  public static final class RoomUserFilter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_control.v1.RoomUserFilter)
      RoomUserFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoomUserFilter.newBuilder() to construct.
    private RoomUserFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RoomUserFilter() {
      orpons_ = emptyLongList();
      roomNumbers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      userIds_ = emptyIntList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserFilter_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder.class);
    }

    public static final int ORPONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.Internal.LongList orpons_;
    /**
     * <pre>
     * По ОРПОНам
     * </pre>
     *
     * <code>repeated int64 orpons = 1;</code>
     * @return A list containing the orpons.
     */
    @java.lang.Override
    public java.util.List<java.lang.Long>
        getOrponsList() {
      return orpons_;
    }
    /**
     * <pre>
     * По ОРПОНам
     * </pre>
     *
     * <code>repeated int64 orpons = 1;</code>
     * @return The count of orpons.
     */
    public int getOrponsCount() {
      return orpons_.size();
    }
    /**
     * <pre>
     * По ОРПОНам
     * </pre>
     *
     * <code>repeated int64 orpons = 1;</code>
     * @param index The index of the element to return.
     * @return The orpons at the given index.
     */
    public long getOrpons(int index) {
      return orpons_.getLong(index);
    }
    private int orponsMemoizedSerializedSize = -1;

    public static final int ROOM_NUMBERS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList roomNumbers_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @return A list containing the roomNumbers.
     */
    public com.google.protobuf.ProtocolStringList
        getRoomNumbersList() {
      return roomNumbers_;
    }
    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @return The count of roomNumbers.
     */
    public int getRoomNumbersCount() {
      return roomNumbers_.size();
    }
    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @param index The index of the element to return.
     * @return The roomNumbers at the given index.
     */
    public java.lang.String getRoomNumbers(int index) {
      return roomNumbers_.get(index);
    }
    /**
     * <pre>
     * По номерам квартир
     * </pre>
     *
     * <code>repeated string room_numbers = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the roomNumbers at the given index.
     */
    public com.google.protobuf.ByteString
        getRoomNumbersBytes(int index) {
      return roomNumbers_.getByteString(index);
    }

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

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getOrponsList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(orponsMemoizedSerializedSize);
      }
      for (int i = 0; i < orpons_.size(); i++) {
        output.writeInt64NoTag(orpons_.getLong(i));
      }
      for (int i = 0; i < roomNumbers_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, roomNumbers_.getRaw(i));
      }
      if (getUserIdsList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(userIdsMemoizedSerializedSize);
      }
      for (int i = 0; i < userIds_.size(); i++) {
        output.writeInt32NoTag(userIds_.getInt(i));
      }
      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 < orpons_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(orpons_.getLong(i));
        }
        size += dataSize;
        if (!getOrponsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        orponsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < roomNumbers_.size(); i++) {
          dataSize += computeStringSizeNoTag(roomNumbers_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getRoomNumbersList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < userIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(userIds_.getInt(i));
        }
        size += dataSize;
        if (!getUserIdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        userIdsMemoizedSerializedSize = dataSize;
      }
      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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter)) {
        return super.equals(obj);
      }
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter other = (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter) obj;

      if (!getOrponsList()
          .equals(other.getOrponsList())) return false;
      if (!getRoomNumbersList()
          .equals(other.getRoomNumbersList())) 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 (getOrponsCount() > 0) {
        hash = (37 * hash) + ORPONS_FIELD_NUMBER;
        hash = (53 * hash) + getOrponsList().hashCode();
      }
      if (getRoomNumbersCount() > 0) {
        hash = (37 * hash) + ROOM_NUMBERS_FIELD_NUMBER;
        hash = (53 * hash) + getRoomNumbersList().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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter 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_control.v1.RoomUserFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.RoomUserFilter)
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserFilter_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.Builder.class);
      }

      // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        orpons_ = emptyLongList();
        roomNumbers_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        userIds_ = emptyIntList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserFilter_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getDefaultInstanceForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance();
      }

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

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

      private void buildPartialRepeatedFields(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter result) {
        if (((bitField0_ & 0x00000001) != 0)) {
          orpons_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.orpons_ = orpons_;
        if (((bitField0_ & 0x00000004) != 0)) {
          userIds_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.userIds_ = userIds_;
      }

      private void buildPartial0(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          roomNumbers_.makeImmutable();
          result.roomNumbers_ = roomNumbers_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter other) {
        if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter.getDefaultInstance()) return this;
        if (!other.orpons_.isEmpty()) {
          if (orpons_.isEmpty()) {
            orpons_ = other.orpons_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureOrponsIsMutable();
            orpons_.addAll(other.orpons_);
          }
          onChanged();
        }
        if (!other.roomNumbers_.isEmpty()) {
          if (roomNumbers_.isEmpty()) {
            roomNumbers_ = other.roomNumbers_;
            bitField0_ |= 0x00000002;
          } else {
            ensureRoomNumbersIsMutable();
            roomNumbers_.addAll(other.roomNumbers_);
          }
          onChanged();
        }
        if (!other.userIds_.isEmpty()) {
          if (userIds_.isEmpty()) {
            userIds_ = other.userIds_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } 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 8: {
                long v = input.readInt64();
                ensureOrponsIsMutable();
                orpons_.addLong(v);
                break;
              } // case 8
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureOrponsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  orpons_.addLong(input.readInt64());
                }
                input.popLimit(limit);
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureRoomNumbersIsMutable();
                roomNumbers_.add(s);
                break;
              } // case 18
              case 24: {
                int v = input.readInt32();
                ensureUserIdsIsMutable();
                userIds_.addInt(v);
                break;
              } // case 24
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureUserIdsIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  userIds_.addInt(input.readInt32());
                }
                input.popLimit(limit);
                break;
              } // case 26
              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.Internal.LongList orpons_ = emptyLongList();
      private void ensureOrponsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          orpons_ = mutableCopy(orpons_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <pre>
       * По ОРПОНам
       * </pre>
       *
       * <code>repeated int64 orpons = 1;</code>
       * @return A list containing the orpons.
       */
      public java.util.List<java.lang.Long>
          getOrponsList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(orpons_) : orpons_;
      }
      /**
       * <pre>
       * По ОРПОНам
       * </pre>
       *
       * <code>repeated int64 orpons = 1;</code>
       * @return The count of orpons.
       */
      public int getOrponsCount() {
        return orpons_.size();
      }
      /**
       * <pre>
       * По ОРПОНам
       * </pre>
       *
       * <code>repeated int64 orpons = 1;</code>
       * @param index The index of the element to return.
       * @return The orpons at the given index.
       */
      public long getOrpons(int index) {
        return orpons_.getLong(index);
      }
      /**
       * <pre>
       * По ОРПОНам
       * </pre>
       *
       * <code>repeated int64 orpons = 1;</code>
       * @param index The index to set the value at.
       * @param value The orpons to set.
       * @return This builder for chaining.
       */
      public Builder setOrpons(
          int index, long value) {

        ensureOrponsIsMutable();
        orpons_.setLong(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По ОРПОНам
       * </pre>
       *
       * <code>repeated int64 orpons = 1;</code>
       * @param value The orpons to add.
       * @return This builder for chaining.
       */
      public Builder addOrpons(long value) {

        ensureOrponsIsMutable();
        orpons_.addLong(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По ОРПОНам
       * </pre>
       *
       * <code>repeated int64 orpons = 1;</code>
       * @param values The orpons to add.
       * @return This builder for chaining.
       */
      public Builder addAllOrpons(
          java.lang.Iterable<? extends java.lang.Long> values) {
        ensureOrponsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, orpons_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По ОРПОНам
       * </pre>
       *
       * <code>repeated int64 orpons = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrpons() {
        orpons_ = emptyLongList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList roomNumbers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureRoomNumbersIsMutable() {
        if (!roomNumbers_.isModifiable()) {
          roomNumbers_ = new com.google.protobuf.LazyStringArrayList(roomNumbers_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @return A list containing the roomNumbers.
       */
      public com.google.protobuf.ProtocolStringList
          getRoomNumbersList() {
        roomNumbers_.makeImmutable();
        return roomNumbers_;
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @return The count of roomNumbers.
       */
      public int getRoomNumbersCount() {
        return roomNumbers_.size();
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @param index The index of the element to return.
       * @return The roomNumbers at the given index.
       */
      public java.lang.String getRoomNumbers(int index) {
        return roomNumbers_.get(index);
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the roomNumbers at the given index.
       */
      public com.google.protobuf.ByteString
          getRoomNumbersBytes(int index) {
        return roomNumbers_.getByteString(index);
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @param index The index to set the value at.
       * @param value The roomNumbers to set.
       * @return This builder for chaining.
       */
      public Builder setRoomNumbers(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRoomNumbersIsMutable();
        roomNumbers_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @param value The roomNumbers to add.
       * @return This builder for chaining.
       */
      public Builder addRoomNumbers(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRoomNumbersIsMutable();
        roomNumbers_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @param values The roomNumbers to add.
       * @return This builder for chaining.
       */
      public Builder addAllRoomNumbers(
          java.lang.Iterable<java.lang.String> values) {
        ensureRoomNumbersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, roomNumbers_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRoomNumbers() {
        roomNumbers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * По номерам квартир
       * </pre>
       *
       * <code>repeated string room_numbers = 2;</code>
       * @param value The bytes of the roomNumbers to add.
       * @return This builder for chaining.
       */
      public Builder addRoomNumbersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureRoomNumbersIsMutable();
        roomNumbers_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

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

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

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

    // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.RoomUserFilter)
    private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter();
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RoomUserFilter>
        PARSER = new com.google.protobuf.AbstractParser<RoomUserFilter>() {
      @java.lang.Override
      public RoomUserFilter 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<RoomUserFilter> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoomUserPagingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.access_control.v1.RoomUserPaging)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging.DirectionType direction_type = 2;</code>
     * @return The enum numeric value on the wire for directionType.
     */
    int getDirectionTypeValue();
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.RoomUserPaging}
   */
  public static final class RoomUserPaging extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.access_control.v1.RoomUserPaging)
      RoomUserPagingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoomUserPaging.newBuilder() to construct.
    private RoomUserPaging(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RoomUserPaging() {
      orderByType_ = 0;
      directionType_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserPaging_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserPaging_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.Builder.class);
    }

    /**
     * <pre>
     * Справочник типов значений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_control.v1.RoomUserPaging.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>USER_ID = 1;</code>
       */
      USER_ID(1),
      /**
       * <pre>
       * По ОРПОНу и номеру
       * </pre>
       *
       * <code>ORPON_THEN_NUMBER = 2;</code>
       */
      ORPON_THEN_NUMBER(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>USER_ID = 1;</code>
       */
      public static final int USER_ID_VALUE = 1;
      /**
       * <pre>
       * По ОРПОНу и номеру
       * </pre>
       *
       * <code>ORPON_THEN_NUMBER = 2;</code>
       */
      public static final int ORPON_THEN_NUMBER_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 USER_ID;
          case 2: return ORPON_THEN_NUMBER;
          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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.RoomUserPaging.OrderByType)
    }

    /**
     * <pre>
     * Справочник типов направлений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.access_control.v1.RoomUserPaging.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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.RoomUserPaging.DirectionType)
    }

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_ = 0;
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: USER_ID
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging.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>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: USER_ID
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    @java.lang.Override public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType getOrderByType() {
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType result = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType.forNumber(orderByType_);
      return result == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType.UNRECOGNIZED : result;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_ = 0;
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.access_control.v1.RoomUserPaging.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_control.v1.RoomUserPaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    @java.lang.Override public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType getDirectionType() {
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType result = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType.forNumber(directionType_);
      return result == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType.ORDER_BY_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(1, orderByType_);
      }
      if (directionType_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType.ORDER_BY_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, orderByType_);
      }
      if (directionType_ != ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging)) {
        return super.equals(obj);
      }
      ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging other = (ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.RoomUserPaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.access_control.v1.RoomUserPaging)
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPagingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserPaging_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserPaging_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.class, ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.Builder.class);
      }

      // Construct using ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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_control.v1.KeyapisAccessControlV1Proto.internal_static_keyapis_access_control_v1_RoomUserPaging_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging getDefaultInstanceForType() {
        return ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging 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_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging) {
          return mergeFrom((ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging other) {
        if (other == ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.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>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: USER_ID
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging.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>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: USER_ID
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging.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>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: USER_ID
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging.OrderByType order_by_type = 1;</code>
       * @return The orderByType.
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType getOrderByType() {
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType result = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType.forNumber(orderByType_);
        return result == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: USER_ID
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging.OrderByType order_by_type = 1;</code>
       * @param value The orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByType(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.OrderByType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        orderByType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: USER_ID
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging.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_control.v1.RoomUserPaging.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_control.v1.RoomUserPaging.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_control.v1.RoomUserPaging.DirectionType direction_type = 2;</code>
       * @return The directionType.
       */
      @java.lang.Override
      public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType getDirectionType() {
        ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType result = ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType.forNumber(directionType_);
        return result == null ? ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging.DirectionType direction_type = 2;</code>
       * @param value The directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionType(ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging.DirectionType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        directionType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.access_control.v1.RoomUserPaging.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_control.v1.RoomUserPaging)
    }

    // @@protoc_insertion_point(class_scope:keyapis.access_control.v1.RoomUserPaging)
    private static final ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging();
    }

    public static ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RoomUserPaging>
        PARSER = new com.google.protobuf.AbstractParser<RoomUserPaging>() {
      @java.lang.Override
      public RoomUserPaging 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<RoomUserPaging> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.RoomUserPaging getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_RoomUser_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_RoomUser_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_GetRoomUserListRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_GetRoomUserListRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_GetRoomUserListResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_GetRoomUserListResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_RoomUserFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_RoomUserFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_access_control_v1_RoomUserPaging_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_access_control_v1_RoomUserPaging_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\nCkeyapis/access_control/v1/keyapis_acce" +
      "ss_control_room_user_v1.proto\022\031keyapis.a" +
      "ccess_control.v1\032\034google/api/annotations" +
      ".proto\032\037google/api/field_behavior.proto\032" +
      "\037google/protobuf/timestamp.proto\032\036google" +
      "/protobuf/wrappers.proto\032Hkeyapis/access" +
      "_control/v1/keyapis_access_control_acces" +
      "s_control_v1.proto\"N\n\010RoomUser\022\022\n\005orpon\030" +
      "\001 \001(\003B\003\340A\002\022\030\n\013room_number\030\002 \001(\tB\003\340A\002\022\024\n\007" +
      "user_id\030\003 \001(\005B\003\340A\002\"\236\001\n\026GetRoomUserListRe" +
      "quest\0229\n\006filter\030\001 \001(\0132).keyapis.access_c" +
      "ontrol.v1.RoomUserFilter\022;\n\006paging\030\002 \001(\013" +
      "2).keyapis.access_control.v1.RoomUserPag" +
      "ingH\000B\014\n\npagination\"\366\001\n\027GetRoomUserListR" +
      "esponse\0223\n\004data\030\001 \001(\0132#.keyapis.access_c" +
      "ontrol.v1.RoomUserH\000\022I\n\005error\030\002 \001(\01328.ke" +
      "yapis.access_control.v1.GetRoomUserListR" +
      "esponse.ErrorH\000\032S\n\005Error\022@\n\nvalidation\030\001" +
      " \001(\0132*.keyapis.access_control.v1.Validat" +
      "ionErrorH\000B\010\n\006reasonB\006\n\004type\"T\n\027GetRoomU" +
      "serCountRequest\0229\n\006filter\030\001 \001(\0132).keyapi" +
      "s.access_control.v1.RoomUserFilter\"2\n\030Ge" +
      "tRoomUserCountResponse\022\016\n\004data\030\001 \001(\005H\000B\006" +
      "\n\004type\"H\n\016RoomUserFilter\022\016\n\006orpons\030\001 \003(\003" +
      "\022\024\n\014room_numbers\030\002 \003(\t\022\020\n\010user_ids\030\003 \003(\005" +
      "\"\334\002\n\016RoomUserPaging\022L\n\rorder_by_type\030\001 \001" +
      "(\01625.keyapis.access_control.v1.RoomUserP" +
      "aging.OrderByType\022O\n\016direction_type\030\002 \001(" +
      "\01627.keyapis.access_control.v1.RoomUserPa" +
      "ging.DirectionType\022\r\n\005limit\030\003 \001(\005\022\016\n\006off" +
      "set\030\004 \001(\005\"L\n\013OrderByType\022\031\n\025ORDER_BY_TYP" +
      "E_UNKNOWN\020\000\022\013\n\007USER_ID\020\001\022\025\n\021ORPON_THEN_N" +
      "UMBER\020\002\">\n\rDirectionType\022\032\n\026DIRECTION_TY" +
      "PE_UNKNOWN\020\000\022\010\n\004DESC\020\001\022\007\n\003ASC\020\0022\353\002\n\017Room" +
      "UserService\022\251\001\n\017GetRoomUserList\0221.keyapi" +
      "s.access_control.v1.GetRoomUserListReque" +
      "st\0322.keyapis.access_control.v1.GetRoomUs" +
      "erListResponse\"-\202\323\344\223\002\'\022%/access_control/" +
      "api/v1/room/user/list0\001\022\253\001\n\020GetRoomUserC" +
      "ount\0222.keyapis.access_control.v1.GetRoom" +
      "UserCountRequest\0323.keyapis.access_contro" +
      "l.v1.GetRoomUserCountResponse\".\202\323\344\223\002(\022&/" +
      "access_control/api/v1/room/user/countB\315\001" +
      "\n\034ru.keyapis.access_control.v1B\033KeyapisA" +
      "ccessControlV1ProtoH\003P\000Z\032/keyapis_access" +
      "_control_v1\330\001\001\370\001\001\242\002\026KEYAPISACCESSCONTROL" +
      "V1\252\002\030Keyapis.AccessControl.V1\312\002\030Keyapis\\" +
      "AccessControl\\V1\352\002\032Keyapis::AccessContro" +
      "l::V1b\006proto3"
    };
    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.TimestampProto.getDescriptor(),
          com.google.protobuf.WrappersProto.getDescriptor(),
          ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.getDescriptor(),
        });
    internal_static_keyapis_access_control_v1_RoomUser_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_keyapis_access_control_v1_RoomUser_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_RoomUser_descriptor,
        new java.lang.String[] { "Orpon", "RoomNumber", "UserId", });
    internal_static_keyapis_access_control_v1_GetRoomUserListRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_keyapis_access_control_v1_GetRoomUserListRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_GetRoomUserListRequest_descriptor,
        new java.lang.String[] { "Filter", "Paging", "Pagination", });
    internal_static_keyapis_access_control_v1_GetRoomUserListResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_keyapis_access_control_v1_GetRoomUserListResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_GetRoomUserListResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_descriptor =
      internal_static_keyapis_access_control_v1_GetRoomUserListResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_GetRoomUserListResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_GetRoomUserCountRequest_descriptor,
        new java.lang.String[] { "Filter", });
    internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_GetRoomUserCountResponse_descriptor,
        new java.lang.String[] { "Data", "Type", });
    internal_static_keyapis_access_control_v1_RoomUserFilter_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_keyapis_access_control_v1_RoomUserFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_RoomUserFilter_descriptor,
        new java.lang.String[] { "Orpons", "RoomNumbers", "UserIds", });
    internal_static_keyapis_access_control_v1_RoomUserPaging_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_keyapis_access_control_v1_RoomUserPaging_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_access_control_v1_RoomUserPaging_descriptor,
        new java.lang.String[] { "OrderByType", "DirectionType", "Limit", "Offset", });
    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.TimestampProto.getDescriptor();
    com.google.protobuf.WrappersProto.getDescriptor();
    ru.keyapis.access_control.v1.KeyapisAccessControlV1Proto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
