// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: k8s.io/api/rbac/v1/generated.proto

package io.kubernetes.client.proto;

public final class V1Rbac {
  private V1Rbac() {}
  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 ClusterRoleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.ClusterRole)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> 
        getRulesList();
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.PolicyRule getRules(int index);
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    int getRulesCount();
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
        getRulesOrBuilderList();
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder getRulesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRole}
   */
  public  static final class ClusterRole extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.ClusterRole)
      ClusterRoleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClusterRole.newBuilder() to construct.
    private ClusterRole(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClusterRole() {
      rules_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClusterRole(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ObjectMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ObjectMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                rules_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.PolicyRule>();
                mutable_bitField0_ |= 0x00000002;
              }
              rules_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.PolicyRule.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          rules_ = java.util.Collections.unmodifiableList(rules_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRole_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRole_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.ClusterRole.class, io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ObjectMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int RULES_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> rules_;
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> getRulesList() {
      return rules_;
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
        getRulesOrBuilderList() {
      return rules_;
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public int getRulesCount() {
      return rules_.size();
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.PolicyRule getRules(int index) {
      return rules_.get(index);
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this ClusterRole
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder getRulesOrBuilder(
        int index) {
      return rules_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < rules_.size(); i++) {
        output.writeMessage(2, rules_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < rules_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, rules_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.ClusterRole)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.ClusterRole other = (io.kubernetes.client.proto.V1Rbac.ClusterRole) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getRulesList()
          .equals(other.getRulesList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getRulesCount() > 0) {
        hash = (37 * hash) + RULES_FIELD_NUMBER;
        hash = (53 * hash) + getRulesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole 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 io.kubernetes.client.proto.V1Rbac.ClusterRole parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole 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 io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRole parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.ClusterRole prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRole}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.ClusterRole)
        io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRole_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRole_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.ClusterRole.class, io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.ClusterRole.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getRulesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (rulesBuilder_ == null) {
          rules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          rulesBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRole_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRole getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.ClusterRole.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRole build() {
        io.kubernetes.client.proto.V1Rbac.ClusterRole result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRole buildPartial() {
        io.kubernetes.client.proto.V1Rbac.ClusterRole result = new io.kubernetes.client.proto.V1Rbac.ClusterRole(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (rulesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            rules_ = java.util.Collections.unmodifiableList(rules_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.rules_ = rules_;
        } else {
          result.rules_ = rulesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.ClusterRole) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.ClusterRole)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.ClusterRole other) {
        if (other == io.kubernetes.client.proto.V1Rbac.ClusterRole.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (rulesBuilder_ == null) {
          if (!other.rules_.isEmpty()) {
            if (rules_.isEmpty()) {
              rules_ = other.rules_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureRulesIsMutable();
              rules_.addAll(other.rules_);
            }
            onChanged();
          }
        } else {
          if (!other.rules_.isEmpty()) {
            if (rulesBuilder_.isEmpty()) {
              rulesBuilder_.dispose();
              rulesBuilder_ = null;
              rules_ = other.rules_;
              bitField0_ = (bitField0_ & ~0x00000002);
              rulesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRulesFieldBuilder() : null;
            } else {
              rulesBuilder_.addAllMessages(other.rules_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.ClusterRole parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.ClusterRole) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ObjectMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ObjectMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> rules_ =
        java.util.Collections.emptyList();
      private void ensureRulesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          rules_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.PolicyRule>(rules_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.PolicyRule, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder, io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> rulesBuilder_;

      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> getRulesList() {
        if (rulesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rules_);
        } else {
          return rulesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public int getRulesCount() {
        if (rulesBuilder_ == null) {
          return rules_.size();
        } else {
          return rulesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule getRules(int index) {
        if (rulesBuilder_ == null) {
          return rules_.get(index);
        } else {
          return rulesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder setRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.set(index, value);
          onChanged();
        } else {
          rulesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder setRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.set(index, builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(io.kubernetes.client.proto.V1Rbac.PolicyRule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.add(value);
          onChanged();
        } else {
          rulesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.add(index, value);
          onChanged();
        } else {
          rulesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(
          io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.add(builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.add(index, builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addAllRules(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.PolicyRule> values) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, rules_);
          onChanged();
        } else {
          rulesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder clearRules() {
        if (rulesBuilder_ == null) {
          rules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          rulesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder removeRules(int index) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.remove(index);
          onChanged();
        } else {
          rulesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder getRulesBuilder(
          int index) {
        return getRulesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder getRulesOrBuilder(
          int index) {
        if (rulesBuilder_ == null) {
          return rules_.get(index);  } else {
          return rulesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
           getRulesOrBuilderList() {
        if (rulesBuilder_ != null) {
          return rulesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rules_);
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder addRulesBuilder() {
        return getRulesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.PolicyRule.getDefaultInstance());
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder addRulesBuilder(
          int index) {
        return getRulesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.PolicyRule.getDefaultInstance());
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this ClusterRole
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder> 
           getRulesBuilderList() {
        return getRulesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.PolicyRule, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder, io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
          getRulesFieldBuilder() {
        if (rulesBuilder_ == null) {
          rulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.PolicyRule, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder, io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder>(
                  rules_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          rules_ = null;
        }
        return rulesBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.ClusterRole)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.ClusterRole)
    private static final io.kubernetes.client.proto.V1Rbac.ClusterRole DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.ClusterRole();
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRole getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ClusterRole>
        PARSER = new com.google.protobuf.AbstractParser<ClusterRole>() {
      public ClusterRole parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ClusterRole(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.ClusterRole getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClusterRoleBindingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.ClusterRoleBinding)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> 
        getSubjectsList();
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.Subject getSubjects(int index);
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    int getSubjectsCount();
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
        getSubjectsOrBuilderList();
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder getSubjectsOrBuilder(
        int index);

    /**
     * <pre>
     * RoleRef can only reference a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    boolean hasRoleRef();
    /**
     * <pre>
     * RoleRef can only reference a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    io.kubernetes.client.proto.V1Rbac.RoleRef getRoleRef();
    /**
     * <pre>
     * RoleRef can only reference a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder getRoleRefOrBuilder();
  }
  /**
   * <pre>
   * ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference a ClusterRole in the global namespace,
   * and adds who information via Subject.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRoleBinding}
   */
  public  static final class ClusterRoleBinding extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.ClusterRoleBinding)
      ClusterRoleBindingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClusterRoleBinding.newBuilder() to construct.
    private ClusterRoleBinding(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClusterRoleBinding() {
      subjects_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClusterRoleBinding(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ObjectMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ObjectMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                subjects_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.Subject>();
                mutable_bitField0_ |= 0x00000002;
              }
              subjects_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.Subject.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              io.kubernetes.client.proto.V1Rbac.RoleRef.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = roleRef_.toBuilder();
              }
              roleRef_ = input.readMessage(io.kubernetes.client.proto.V1Rbac.RoleRef.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(roleRef_);
                roleRef_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          subjects_ = java.util.Collections.unmodifiableList(subjects_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.class, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ObjectMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int SUBJECTS_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> subjects_;
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> getSubjectsList() {
      return subjects_;
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
        getSubjectsOrBuilderList() {
      return subjects_;
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public int getSubjectsCount() {
      return subjects_.size();
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.Subject getSubjects(int index) {
      return subjects_.get(index);
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder getSubjectsOrBuilder(
        int index) {
      return subjects_.get(index);
    }

    public static final int ROLEREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1Rbac.RoleRef roleRef_;
    /**
     * <pre>
     * RoleRef can only reference a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    public boolean hasRoleRef() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * RoleRef can only reference a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.RoleRef getRoleRef() {
      return roleRef_ == null ? io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
    }
    /**
     * <pre>
     * RoleRef can only reference a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder getRoleRefOrBuilder() {
      return roleRef_ == null ? io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < subjects_.size(); i++) {
        output.writeMessage(2, subjects_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, getRoleRef());
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < subjects_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, subjects_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getRoleRef());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding other = (io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getSubjectsList()
          .equals(other.getSubjectsList());
      result = result && (hasRoleRef() == other.hasRoleRef());
      if (hasRoleRef()) {
        result = result && getRoleRef()
            .equals(other.getRoleRef());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getSubjectsCount() > 0) {
        hash = (37 * hash) + SUBJECTS_FIELD_NUMBER;
        hash = (53 * hash) + getSubjectsList().hashCode();
      }
      if (hasRoleRef()) {
        hash = (37 * hash) + ROLEREF_FIELD_NUMBER;
        hash = (53 * hash) + getRoleRef().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding 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 io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding 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 io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference a ClusterRole in the global namespace,
     * and adds who information via Subject.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRoleBinding}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.ClusterRoleBinding)
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.class, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getSubjectsFieldBuilder();
          getRoleRefFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (subjectsBuilder_ == null) {
          subjects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          subjectsBuilder_.clear();
        }
        if (roleRefBuilder_ == null) {
          roleRef_ = null;
        } else {
          roleRefBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding build() {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding buildPartial() {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding result = new io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (subjectsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            subjects_ = java.util.Collections.unmodifiableList(subjects_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.subjects_ = subjects_;
        } else {
          result.subjects_ = subjectsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (roleRefBuilder_ == null) {
          result.roleRef_ = roleRef_;
        } else {
          result.roleRef_ = roleRefBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding other) {
        if (other == io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (subjectsBuilder_ == null) {
          if (!other.subjects_.isEmpty()) {
            if (subjects_.isEmpty()) {
              subjects_ = other.subjects_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSubjectsIsMutable();
              subjects_.addAll(other.subjects_);
            }
            onChanged();
          }
        } else {
          if (!other.subjects_.isEmpty()) {
            if (subjectsBuilder_.isEmpty()) {
              subjectsBuilder_.dispose();
              subjectsBuilder_ = null;
              subjects_ = other.subjects_;
              bitField0_ = (bitField0_ & ~0x00000002);
              subjectsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSubjectsFieldBuilder() : null;
            } else {
              subjectsBuilder_.addAllMessages(other.subjects_);
            }
          }
        }
        if (other.hasRoleRef()) {
          mergeRoleRef(other.getRoleRef());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ObjectMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ObjectMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> subjects_ =
        java.util.Collections.emptyList();
      private void ensureSubjectsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          subjects_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.Subject>(subjects_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.Subject, io.kubernetes.client.proto.V1Rbac.Subject.Builder, io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> subjectsBuilder_;

      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> getSubjectsList() {
        if (subjectsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subjects_);
        } else {
          return subjectsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public int getSubjectsCount() {
        if (subjectsBuilder_ == null) {
          return subjects_.size();
        } else {
          return subjectsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject getSubjects(int index) {
        if (subjectsBuilder_ == null) {
          return subjects_.get(index);
        } else {
          return subjectsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder setSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject value) {
        if (subjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectsIsMutable();
          subjects_.set(index, value);
          onChanged();
        } else {
          subjectsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder setSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject.Builder builderForValue) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.set(index, builderForValue.build());
          onChanged();
        } else {
          subjectsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(io.kubernetes.client.proto.V1Rbac.Subject value) {
        if (subjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectsIsMutable();
          subjects_.add(value);
          onChanged();
        } else {
          subjectsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject value) {
        if (subjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectsIsMutable();
          subjects_.add(index, value);
          onChanged();
        } else {
          subjectsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(
          io.kubernetes.client.proto.V1Rbac.Subject.Builder builderForValue) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.add(builderForValue.build());
          onChanged();
        } else {
          subjectsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject.Builder builderForValue) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.add(index, builderForValue.build());
          onChanged();
        } else {
          subjectsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addAllSubjects(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.Subject> values) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subjects_);
          onChanged();
        } else {
          subjectsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder clearSubjects() {
        if (subjectsBuilder_ == null) {
          subjects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          subjectsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder removeSubjects(int index) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.remove(index);
          onChanged();
        } else {
          subjectsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject.Builder getSubjectsBuilder(
          int index) {
        return getSubjectsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder getSubjectsOrBuilder(
          int index) {
        if (subjectsBuilder_ == null) {
          return subjects_.get(index);  } else {
          return subjectsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
           getSubjectsOrBuilderList() {
        if (subjectsBuilder_ != null) {
          return subjectsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subjects_);
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject.Builder addSubjectsBuilder() {
        return getSubjectsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.Subject.getDefaultInstance());
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject.Builder addSubjectsBuilder(
          int index) {
        return getSubjectsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.Subject.getDefaultInstance());
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.Subject.Builder> 
           getSubjectsBuilderList() {
        return getSubjectsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.Subject, io.kubernetes.client.proto.V1Rbac.Subject.Builder, io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
          getSubjectsFieldBuilder() {
        if (subjectsBuilder_ == null) {
          subjectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.Subject, io.kubernetes.client.proto.V1Rbac.Subject.Builder, io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder>(
                  subjects_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          subjects_ = null;
        }
        return subjectsBuilder_;
      }

      private io.kubernetes.client.proto.V1Rbac.RoleRef roleRef_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.RoleRef, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder, io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder> roleRefBuilder_;
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public boolean hasRoleRef() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleRef getRoleRef() {
        if (roleRefBuilder_ == null) {
          return roleRef_ == null ? io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
        } else {
          return roleRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder setRoleRef(io.kubernetes.client.proto.V1Rbac.RoleRef value) {
        if (roleRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          roleRef_ = value;
          onChanged();
        } else {
          roleRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder setRoleRef(
          io.kubernetes.client.proto.V1Rbac.RoleRef.Builder builderForValue) {
        if (roleRefBuilder_ == null) {
          roleRef_ = builderForValue.build();
          onChanged();
        } else {
          roleRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder mergeRoleRef(io.kubernetes.client.proto.V1Rbac.RoleRef value) {
        if (roleRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              roleRef_ != null &&
              roleRef_ != io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance()) {
            roleRef_ =
              io.kubernetes.client.proto.V1Rbac.RoleRef.newBuilder(roleRef_).mergeFrom(value).buildPartial();
          } else {
            roleRef_ = value;
          }
          onChanged();
        } else {
          roleRefBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder clearRoleRef() {
        if (roleRefBuilder_ == null) {
          roleRef_ = null;
          onChanged();
        } else {
          roleRefBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleRef.Builder getRoleRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getRoleRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder getRoleRefOrBuilder() {
        if (roleRefBuilder_ != null) {
          return roleRefBuilder_.getMessageOrBuilder();
        } else {
          return roleRef_ == null ?
              io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
        }
      }
      /**
       * <pre>
       * RoleRef can only reference a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.RoleRef, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder, io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder> 
          getRoleRefFieldBuilder() {
        if (roleRefBuilder_ == null) {
          roleRefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.RoleRef, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder, io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder>(
                  getRoleRef(),
                  getParentForChildren(),
                  isClean());
          roleRef_ = null;
        }
        return roleRefBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.ClusterRoleBinding)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.ClusterRoleBinding)
    private static final io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding();
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ClusterRoleBinding>
        PARSER = new com.google.protobuf.AbstractParser<ClusterRoleBinding>() {
      public ClusterRoleBinding parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ClusterRoleBinding(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClusterRoleBindingListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.ClusterRoleBindingList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding getItems(int index);
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ClusterRoleBindingList is a collection of ClusterRoleBindings
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRoleBindingList}
   */
  public  static final class ClusterRoleBindingList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.ClusterRoleBindingList)
      ClusterRoleBindingListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClusterRoleBindingList.newBuilder() to construct.
    private ClusterRoleBindingList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClusterRoleBindingList() {
      items_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClusterRoleBindingList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ListMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ListMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding>();
                mutable_bitField0_ |= 0x00000002;
              }
              items_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = java.util.Collections.unmodifiableList(items_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList.class, io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding> items_;
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of ClusterRoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList other = (io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getItemsList()
          .equals(other.getItemsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList 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 io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList 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 io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * ClusterRoleBindingList is a collection of ClusterRoleBindings
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRoleBindingList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.ClusterRoleBindingList)
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList.class, io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getItemsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList build() {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList buildPartial() {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList result = new io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (itemsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            items_ = java.util.Collections.unmodifiableList(items_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.items_ = items_;
        } else {
          result.items_ = itemsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList other) {
        if (other == io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (itemsBuilder_ == null) {
          if (!other.items_.isEmpty()) {
            if (items_.isEmpty()) {
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureItemsIsMutable();
              items_.addAll(other.items_);
            }
            onChanged();
          }
        } else {
          if (!other.items_.isEmpty()) {
            if (itemsBuilder_.isEmpty()) {
              itemsBuilder_.dispose();
              itemsBuilder_ = null;
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
              itemsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getItemsFieldBuilder() : null;
            } else {
              itemsBuilder_.addAllMessages(other.items_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ListMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ListMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ListMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder, io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of ClusterRoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRoleBinding items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder, io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding, io.kubernetes.client.proto.V1Rbac.ClusterRoleBinding.Builder, io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.ClusterRoleBindingList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.ClusterRoleBindingList)
    private static final io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList();
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ClusterRoleBindingList>
        PARSER = new com.google.protobuf.AbstractParser<ClusterRoleBindingList>() {
      public ClusterRoleBindingList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ClusterRoleBindingList(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.ClusterRoleBindingList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClusterRoleListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.ClusterRoleList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRole> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.ClusterRole getItems(int index);
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ClusterRoleList is a collection of ClusterRoles
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRoleList}
   */
  public  static final class ClusterRoleList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.ClusterRoleList)
      ClusterRoleListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClusterRoleList.newBuilder() to construct.
    private ClusterRoleList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClusterRoleList() {
      items_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ClusterRoleList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ListMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ListMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.ClusterRole>();
                mutable_bitField0_ |= 0x00000002;
              }
              items_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.ClusterRole.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = java.util.Collections.unmodifiableList(items_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleList_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.ClusterRoleList.class, io.kubernetes.client.proto.V1Rbac.ClusterRoleList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRole> items_;
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRole> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.ClusterRole getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of ClusterRoles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.ClusterRoleList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.ClusterRoleList other = (io.kubernetes.client.proto.V1Rbac.ClusterRoleList) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getItemsList()
          .equals(other.getItemsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList 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 io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList 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 io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.ClusterRoleList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * ClusterRoleList is a collection of ClusterRoles
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.ClusterRoleList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.ClusterRoleList)
        io.kubernetes.client.proto.V1Rbac.ClusterRoleListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.ClusterRoleList.class, io.kubernetes.client.proto.V1Rbac.ClusterRoleList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.ClusterRoleList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getItemsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_ClusterRoleList_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.ClusterRoleList.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleList build() {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.ClusterRoleList buildPartial() {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleList result = new io.kubernetes.client.proto.V1Rbac.ClusterRoleList(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (itemsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            items_ = java.util.Collections.unmodifiableList(items_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.items_ = items_;
        } else {
          result.items_ = itemsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.ClusterRoleList) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.ClusterRoleList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.ClusterRoleList other) {
        if (other == io.kubernetes.client.proto.V1Rbac.ClusterRoleList.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (itemsBuilder_ == null) {
          if (!other.items_.isEmpty()) {
            if (items_.isEmpty()) {
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureItemsIsMutable();
              items_.addAll(other.items_);
            }
            onChanged();
          }
        } else {
          if (!other.items_.isEmpty()) {
            if (itemsBuilder_.isEmpty()) {
              itemsBuilder_.dispose();
              itemsBuilder_ = null;
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
              itemsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getItemsFieldBuilder() : null;
            } else {
              itemsBuilder_.addAllMessages(other.items_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.ClusterRoleList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.ClusterRoleList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ListMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ListMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ListMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRole> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.ClusterRole>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.ClusterRole, io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder, io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRole> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRole getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRole value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1Rbac.ClusterRole value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRole value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.ClusterRole> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.ClusterRole.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.ClusterRole.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of ClusterRoles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.ClusterRole items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.ClusterRole, io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder, io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.ClusterRole, io.kubernetes.client.proto.V1Rbac.ClusterRole.Builder, io.kubernetes.client.proto.V1Rbac.ClusterRoleOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.ClusterRoleList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.ClusterRoleList)
    private static final io.kubernetes.client.proto.V1Rbac.ClusterRoleList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.ClusterRoleList();
    }

    public static io.kubernetes.client.proto.V1Rbac.ClusterRoleList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ClusterRoleList>
        PARSER = new com.google.protobuf.AbstractParser<ClusterRoleList>() {
      public ClusterRoleList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ClusterRoleList(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.ClusterRoleList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PolicyRuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.PolicyRule)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    java.util.List<java.lang.String>
        getVerbsList();
    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    int getVerbsCount();
    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    java.lang.String getVerbs(int index);
    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    com.google.protobuf.ByteString
        getVerbsBytes(int index);

    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    java.util.List<java.lang.String>
        getApiGroupsList();
    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    int getApiGroupsCount();
    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    java.lang.String getApiGroups(int index);
    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    com.google.protobuf.ByteString
        getApiGroupsBytes(int index);

    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    java.util.List<java.lang.String>
        getResourcesList();
    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    int getResourcesCount();
    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    java.lang.String getResources(int index);
    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    com.google.protobuf.ByteString
        getResourcesBytes(int index);

    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    java.util.List<java.lang.String>
        getResourceNamesList();
    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    int getResourceNamesCount();
    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    java.lang.String getResourceNames(int index);
    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    com.google.protobuf.ByteString
        getResourceNamesBytes(int index);

    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    java.util.List<java.lang.String>
        getNonResourceURLsList();
    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    int getNonResourceURLsCount();
    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    java.lang.String getNonResourceURLs(int index);
    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    com.google.protobuf.ByteString
        getNonResourceURLsBytes(int index);
  }
  /**
   * <pre>
   * PolicyRule holds information that describes a policy rule, but does not contain information
   * about who the rule applies to or which namespace the rule applies to.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.PolicyRule}
   */
  public  static final class PolicyRule extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.PolicyRule)
      PolicyRuleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PolicyRule.newBuilder() to construct.
    private PolicyRule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PolicyRule() {
      verbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      apiGroups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      resources_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      resourceNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      nonResourceURLs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PolicyRule(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                verbs_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              verbs_.add(bs);
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                apiGroups_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              apiGroups_.add(bs);
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                resources_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              resources_.add(bs);
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                resourceNames_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              resourceNames_.add(bs);
              break;
            }
            case 42: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                nonResourceURLs_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              nonResourceURLs_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          verbs_ = verbs_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          apiGroups_ = apiGroups_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          resources_ = resources_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          resourceNames_ = resourceNames_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          nonResourceURLs_ = nonResourceURLs_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_PolicyRule_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_PolicyRule_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.PolicyRule.class, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder.class);
    }

    public static final int VERBS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList verbs_;
    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getVerbsList() {
      return verbs_;
    }
    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    public int getVerbsCount() {
      return verbs_.size();
    }
    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    public java.lang.String getVerbs(int index) {
      return verbs_.get(index);
    }
    /**
     * <pre>
     * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
     * </pre>
     *
     * <code>repeated string verbs = 1;</code>
     */
    public com.google.protobuf.ByteString
        getVerbsBytes(int index) {
      return verbs_.getByteString(index);
    }

    public static final int APIGROUPS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList apiGroups_;
    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getApiGroupsList() {
      return apiGroups_;
    }
    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    public int getApiGroupsCount() {
      return apiGroups_.size();
    }
    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    public java.lang.String getApiGroups(int index) {
      return apiGroups_.get(index);
    }
    /**
     * <pre>
     * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
     * the enumerated resources in any API group will be allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string apiGroups = 2;</code>
     */
    public com.google.protobuf.ByteString
        getApiGroupsBytes(int index) {
      return apiGroups_.getByteString(index);
    }

    public static final int RESOURCES_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList resources_;
    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getResourcesList() {
      return resources_;
    }
    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    public int getResourcesCount() {
      return resources_.size();
    }
    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    public java.lang.String getResources(int index) {
      return resources_.get(index);
    }
    /**
     * <pre>
     * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
     * +optional
     * </pre>
     *
     * <code>repeated string resources = 3;</code>
     */
    public com.google.protobuf.ByteString
        getResourcesBytes(int index) {
      return resources_.getByteString(index);
    }

    public static final int RESOURCENAMES_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList resourceNames_;
    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getResourceNamesList() {
      return resourceNames_;
    }
    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    public int getResourceNamesCount() {
      return resourceNames_.size();
    }
    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    public java.lang.String getResourceNames(int index) {
      return resourceNames_.get(index);
    }
    /**
     * <pre>
     * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
     * +optional
     * </pre>
     *
     * <code>repeated string resourceNames = 4;</code>
     */
    public com.google.protobuf.ByteString
        getResourceNamesBytes(int index) {
      return resourceNames_.getByteString(index);
    }

    public static final int NONRESOURCEURLS_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList nonResourceURLs_;
    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getNonResourceURLsList() {
      return nonResourceURLs_;
    }
    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    public int getNonResourceURLsCount() {
      return nonResourceURLs_.size();
    }
    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    public java.lang.String getNonResourceURLs(int index) {
      return nonResourceURLs_.get(index);
    }
    /**
     * <pre>
     * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
     * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
     * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
     * +optional
     * </pre>
     *
     * <code>repeated string nonResourceURLs = 5;</code>
     */
    public com.google.protobuf.ByteString
        getNonResourceURLsBytes(int index) {
      return nonResourceURLs_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < verbs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, verbs_.getRaw(i));
      }
      for (int i = 0; i < apiGroups_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, apiGroups_.getRaw(i));
      }
      for (int i = 0; i < resources_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, resources_.getRaw(i));
      }
      for (int i = 0; i < resourceNames_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, resourceNames_.getRaw(i));
      }
      for (int i = 0; i < nonResourceURLs_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, nonResourceURLs_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < verbs_.size(); i++) {
          dataSize += computeStringSizeNoTag(verbs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getVerbsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < apiGroups_.size(); i++) {
          dataSize += computeStringSizeNoTag(apiGroups_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getApiGroupsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < resources_.size(); i++) {
          dataSize += computeStringSizeNoTag(resources_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getResourcesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < resourceNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(resourceNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getResourceNamesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < nonResourceURLs_.size(); i++) {
          dataSize += computeStringSizeNoTag(nonResourceURLs_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNonResourceURLsList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.PolicyRule)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.PolicyRule other = (io.kubernetes.client.proto.V1Rbac.PolicyRule) obj;

      boolean result = true;
      result = result && getVerbsList()
          .equals(other.getVerbsList());
      result = result && getApiGroupsList()
          .equals(other.getApiGroupsList());
      result = result && getResourcesList()
          .equals(other.getResourcesList());
      result = result && getResourceNamesList()
          .equals(other.getResourceNamesList());
      result = result && getNonResourceURLsList()
          .equals(other.getNonResourceURLsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getVerbsCount() > 0) {
        hash = (37 * hash) + VERBS_FIELD_NUMBER;
        hash = (53 * hash) + getVerbsList().hashCode();
      }
      if (getApiGroupsCount() > 0) {
        hash = (37 * hash) + APIGROUPS_FIELD_NUMBER;
        hash = (53 * hash) + getApiGroupsList().hashCode();
      }
      if (getResourcesCount() > 0) {
        hash = (37 * hash) + RESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getResourcesList().hashCode();
      }
      if (getResourceNamesCount() > 0) {
        hash = (37 * hash) + RESOURCENAMES_FIELD_NUMBER;
        hash = (53 * hash) + getResourceNamesList().hashCode();
      }
      if (getNonResourceURLsCount() > 0) {
        hash = (37 * hash) + NONRESOURCEURLS_FIELD_NUMBER;
        hash = (53 * hash) + getNonResourceURLsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule 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 io.kubernetes.client.proto.V1Rbac.PolicyRule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule 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 io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.PolicyRule parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.PolicyRule prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * PolicyRule holds information that describes a policy rule, but does not contain information
     * about who the rule applies to or which namespace the rule applies to.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.PolicyRule}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.PolicyRule)
        io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_PolicyRule_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_PolicyRule_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.PolicyRule.class, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.PolicyRule.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        verbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        apiGroups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        resources_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        resourceNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        nonResourceURLs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_PolicyRule_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.PolicyRule getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.PolicyRule.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.PolicyRule build() {
        io.kubernetes.client.proto.V1Rbac.PolicyRule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.PolicyRule buildPartial() {
        io.kubernetes.client.proto.V1Rbac.PolicyRule result = new io.kubernetes.client.proto.V1Rbac.PolicyRule(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          verbs_ = verbs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.verbs_ = verbs_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          apiGroups_ = apiGroups_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.apiGroups_ = apiGroups_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          resources_ = resources_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.resources_ = resources_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          resourceNames_ = resourceNames_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.resourceNames_ = resourceNames_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          nonResourceURLs_ = nonResourceURLs_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.nonResourceURLs_ = nonResourceURLs_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.PolicyRule) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.PolicyRule)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.PolicyRule other) {
        if (other == io.kubernetes.client.proto.V1Rbac.PolicyRule.getDefaultInstance()) return this;
        if (!other.verbs_.isEmpty()) {
          if (verbs_.isEmpty()) {
            verbs_ = other.verbs_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureVerbsIsMutable();
            verbs_.addAll(other.verbs_);
          }
          onChanged();
        }
        if (!other.apiGroups_.isEmpty()) {
          if (apiGroups_.isEmpty()) {
            apiGroups_ = other.apiGroups_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureApiGroupsIsMutable();
            apiGroups_.addAll(other.apiGroups_);
          }
          onChanged();
        }
        if (!other.resources_.isEmpty()) {
          if (resources_.isEmpty()) {
            resources_ = other.resources_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureResourcesIsMutable();
            resources_.addAll(other.resources_);
          }
          onChanged();
        }
        if (!other.resourceNames_.isEmpty()) {
          if (resourceNames_.isEmpty()) {
            resourceNames_ = other.resourceNames_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureResourceNamesIsMutable();
            resourceNames_.addAll(other.resourceNames_);
          }
          onChanged();
        }
        if (!other.nonResourceURLs_.isEmpty()) {
          if (nonResourceURLs_.isEmpty()) {
            nonResourceURLs_ = other.nonResourceURLs_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureNonResourceURLsIsMutable();
            nonResourceURLs_.addAll(other.nonResourceURLs_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.PolicyRule parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.PolicyRule) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList verbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureVerbsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          verbs_ = new com.google.protobuf.LazyStringArrayList(verbs_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getVerbsList() {
        return verbs_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public int getVerbsCount() {
        return verbs_.size();
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public java.lang.String getVerbs(int index) {
        return verbs_.get(index);
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public com.google.protobuf.ByteString
          getVerbsBytes(int index) {
        return verbs_.getByteString(index);
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public Builder setVerbs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVerbsIsMutable();
        verbs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public Builder addVerbs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVerbsIsMutable();
        verbs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public Builder addAllVerbs(
          java.lang.Iterable<java.lang.String> values) {
        ensureVerbsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, verbs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public Builder clearVerbs() {
        verbs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule.  VerbAll represents all kinds.
       * </pre>
       *
       * <code>repeated string verbs = 1;</code>
       */
      public Builder addVerbsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVerbsIsMutable();
        verbs_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList apiGroups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureApiGroupsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          apiGroups_ = new com.google.protobuf.LazyStringArrayList(apiGroups_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getApiGroupsList() {
        return apiGroups_.getUnmodifiableView();
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public int getApiGroupsCount() {
        return apiGroups_.size();
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public java.lang.String getApiGroups(int index) {
        return apiGroups_.get(index);
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public com.google.protobuf.ByteString
          getApiGroupsBytes(int index) {
        return apiGroups_.getByteString(index);
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public Builder setApiGroups(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureApiGroupsIsMutable();
        apiGroups_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public Builder addApiGroups(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureApiGroupsIsMutable();
        apiGroups_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public Builder addAllApiGroups(
          java.lang.Iterable<java.lang.String> values) {
        ensureApiGroupsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, apiGroups_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public Builder clearApiGroups() {
        apiGroups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroups is the name of the APIGroup that contains the resources.  If multiple API groups are specified, any action requested against one of
       * the enumerated resources in any API group will be allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string apiGroups = 2;</code>
       */
      public Builder addApiGroupsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureApiGroupsIsMutable();
        apiGroups_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList resources_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureResourcesIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          resources_ = new com.google.protobuf.LazyStringArrayList(resources_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getResourcesList() {
        return resources_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public int getResourcesCount() {
        return resources_.size();
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public java.lang.String getResources(int index) {
        return resources_.get(index);
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public com.google.protobuf.ByteString
          getResourcesBytes(int index) {
        return resources_.getByteString(index);
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public Builder setResources(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourcesIsMutable();
        resources_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public Builder addResources(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourcesIsMutable();
        resources_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public Builder addAllResources(
          java.lang.Iterable<java.lang.String> values) {
        ensureResourcesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, resources_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public Builder clearResources() {
        resources_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resources is a list of resources this rule applies to.  ResourceAll represents all resources.
       * +optional
       * </pre>
       *
       * <code>repeated string resources = 3;</code>
       */
      public Builder addResourcesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourcesIsMutable();
        resources_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList resourceNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureResourceNamesIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          resourceNames_ = new com.google.protobuf.LazyStringArrayList(resourceNames_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getResourceNamesList() {
        return resourceNames_.getUnmodifiableView();
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public int getResourceNamesCount() {
        return resourceNames_.size();
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public java.lang.String getResourceNames(int index) {
        return resourceNames_.get(index);
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public com.google.protobuf.ByteString
          getResourceNamesBytes(int index) {
        return resourceNames_.getByteString(index);
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public Builder setResourceNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourceNamesIsMutable();
        resourceNames_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public Builder addResourceNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourceNamesIsMutable();
        resourceNames_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public Builder addAllResourceNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureResourceNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, resourceNames_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public Builder clearResourceNames() {
        resourceNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
       * +optional
       * </pre>
       *
       * <code>repeated string resourceNames = 4;</code>
       */
      public Builder addResourceNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourceNamesIsMutable();
        resourceNames_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList nonResourceURLs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureNonResourceURLsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          nonResourceURLs_ = new com.google.protobuf.LazyStringArrayList(nonResourceURLs_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getNonResourceURLsList() {
        return nonResourceURLs_.getUnmodifiableView();
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public int getNonResourceURLsCount() {
        return nonResourceURLs_.size();
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public java.lang.String getNonResourceURLs(int index) {
        return nonResourceURLs_.get(index);
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public com.google.protobuf.ByteString
          getNonResourceURLsBytes(int index) {
        return nonResourceURLs_.getByteString(index);
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public Builder setNonResourceURLs(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNonResourceURLsIsMutable();
        nonResourceURLs_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public Builder addNonResourceURLs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNonResourceURLsIsMutable();
        nonResourceURLs_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public Builder addAllNonResourceURLs(
          java.lang.Iterable<java.lang.String> values) {
        ensureNonResourceURLsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, nonResourceURLs_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public Builder clearNonResourceURLs() {
        nonResourceURLs_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
       * Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
       * Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"),  but not both.
       * +optional
       * </pre>
       *
       * <code>repeated string nonResourceURLs = 5;</code>
       */
      public Builder addNonResourceURLsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNonResourceURLsIsMutable();
        nonResourceURLs_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.PolicyRule)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.PolicyRule)
    private static final io.kubernetes.client.proto.V1Rbac.PolicyRule DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.PolicyRule();
    }

    public static io.kubernetes.client.proto.V1Rbac.PolicyRule getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PolicyRule>
        PARSER = new com.google.protobuf.AbstractParser<PolicyRule>() {
      public PolicyRule parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new PolicyRule(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.PolicyRule getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.Role)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> 
        getRulesList();
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.PolicyRule getRules(int index);
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    int getRulesCount();
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
        getRulesOrBuilderList();
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder getRulesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.Role}
   */
  public  static final class Role extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.Role)
      RoleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Role.newBuilder() to construct.
    private Role(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Role() {
      rules_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Role(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ObjectMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ObjectMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                rules_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.PolicyRule>();
                mutable_bitField0_ |= 0x00000002;
              }
              rules_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.PolicyRule.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          rules_ = java.util.Collections.unmodifiableList(rules_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Role_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Role_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.Role.class, io.kubernetes.client.proto.V1Rbac.Role.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ObjectMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int RULES_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> rules_;
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> getRulesList() {
      return rules_;
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
        getRulesOrBuilderList() {
      return rules_;
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public int getRulesCount() {
      return rules_.size();
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.PolicyRule getRules(int index) {
      return rules_.get(index);
    }
    /**
     * <pre>
     * Rules holds all the PolicyRules for this Role
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder getRulesOrBuilder(
        int index) {
      return rules_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < rules_.size(); i++) {
        output.writeMessage(2, rules_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < rules_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, rules_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.Role)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.Role other = (io.kubernetes.client.proto.V1Rbac.Role) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getRulesList()
          .equals(other.getRulesList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getRulesCount() > 0) {
        hash = (37 * hash) + RULES_FIELD_NUMBER;
        hash = (53 * hash) + getRulesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role 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 io.kubernetes.client.proto.V1Rbac.Role parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role 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 io.kubernetes.client.proto.V1Rbac.Role parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.Role parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.Role prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.Role}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.Role)
        io.kubernetes.client.proto.V1Rbac.RoleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Role_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Role_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.Role.class, io.kubernetes.client.proto.V1Rbac.Role.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.Role.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getRulesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (rulesBuilder_ == null) {
          rules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          rulesBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Role_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.Role getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.Role.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.Role build() {
        io.kubernetes.client.proto.V1Rbac.Role result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.Role buildPartial() {
        io.kubernetes.client.proto.V1Rbac.Role result = new io.kubernetes.client.proto.V1Rbac.Role(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (rulesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            rules_ = java.util.Collections.unmodifiableList(rules_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.rules_ = rules_;
        } else {
          result.rules_ = rulesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.Role) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.Role)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.Role other) {
        if (other == io.kubernetes.client.proto.V1Rbac.Role.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (rulesBuilder_ == null) {
          if (!other.rules_.isEmpty()) {
            if (rules_.isEmpty()) {
              rules_ = other.rules_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureRulesIsMutable();
              rules_.addAll(other.rules_);
            }
            onChanged();
          }
        } else {
          if (!other.rules_.isEmpty()) {
            if (rulesBuilder_.isEmpty()) {
              rulesBuilder_.dispose();
              rulesBuilder_ = null;
              rules_ = other.rules_;
              bitField0_ = (bitField0_ & ~0x00000002);
              rulesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRulesFieldBuilder() : null;
            } else {
              rulesBuilder_.addAllMessages(other.rules_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.Role parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.Role) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ObjectMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ObjectMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> rules_ =
        java.util.Collections.emptyList();
      private void ensureRulesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          rules_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.PolicyRule>(rules_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.PolicyRule, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder, io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> rulesBuilder_;

      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule> getRulesList() {
        if (rulesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rules_);
        } else {
          return rulesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public int getRulesCount() {
        if (rulesBuilder_ == null) {
          return rules_.size();
        } else {
          return rulesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule getRules(int index) {
        if (rulesBuilder_ == null) {
          return rules_.get(index);
        } else {
          return rulesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder setRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.set(index, value);
          onChanged();
        } else {
          rulesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder setRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.set(index, builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(io.kubernetes.client.proto.V1Rbac.PolicyRule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.add(value);
          onChanged();
        } else {
          rulesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule value) {
        if (rulesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRulesIsMutable();
          rules_.add(index, value);
          onChanged();
        } else {
          rulesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(
          io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.add(builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addRules(
          int index, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder builderForValue) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.add(index, builderForValue.build());
          onChanged();
        } else {
          rulesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder addAllRules(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.PolicyRule> values) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, rules_);
          onChanged();
        } else {
          rulesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder clearRules() {
        if (rulesBuilder_ == null) {
          rules_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          rulesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public Builder removeRules(int index) {
        if (rulesBuilder_ == null) {
          ensureRulesIsMutable();
          rules_.remove(index);
          onChanged();
        } else {
          rulesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder getRulesBuilder(
          int index) {
        return getRulesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder getRulesOrBuilder(
          int index) {
        if (rulesBuilder_ == null) {
          return rules_.get(index);  } else {
          return rulesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
           getRulesOrBuilderList() {
        if (rulesBuilder_ != null) {
          return rulesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rules_);
        }
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder addRulesBuilder() {
        return getRulesFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.PolicyRule.getDefaultInstance());
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder addRulesBuilder(
          int index) {
        return getRulesFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.PolicyRule.getDefaultInstance());
      }
      /**
       * <pre>
       * Rules holds all the PolicyRules for this Role
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.PolicyRule rules = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder> 
           getRulesBuilderList() {
        return getRulesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.PolicyRule, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder, io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder> 
          getRulesFieldBuilder() {
        if (rulesBuilder_ == null) {
          rulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.PolicyRule, io.kubernetes.client.proto.V1Rbac.PolicyRule.Builder, io.kubernetes.client.proto.V1Rbac.PolicyRuleOrBuilder>(
                  rules_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          rules_ = null;
        }
        return rulesBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.Role)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.Role)
    private static final io.kubernetes.client.proto.V1Rbac.Role DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.Role();
    }

    public static io.kubernetes.client.proto.V1Rbac.Role getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Role>
        PARSER = new com.google.protobuf.AbstractParser<Role>() {
      public Role parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new Role(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.Role getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleBindingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.RoleBinding)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> 
        getSubjectsList();
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.Subject getSubjects(int index);
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    int getSubjectsCount();
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
        getSubjectsOrBuilderList();
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder getSubjectsOrBuilder(
        int index);

    /**
     * <pre>
     * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    boolean hasRoleRef();
    /**
     * <pre>
     * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    io.kubernetes.client.proto.V1Rbac.RoleRef getRoleRef();
    /**
     * <pre>
     * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder getRoleRefOrBuilder();
  }
  /**
   * <pre>
   * RoleBinding references a role, but does not contain it.  It can reference a Role in the same namespace or a ClusterRole in the global namespace.
   * It adds who information via Subjects and namespace information by which namespace it exists in.  RoleBindings in a given
   * namespace only have effect in that namespace.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.RoleBinding}
   */
  public  static final class RoleBinding extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.RoleBinding)
      RoleBindingOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleBinding.newBuilder() to construct.
    private RoleBinding(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RoleBinding() {
      subjects_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleBinding(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ObjectMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ObjectMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                subjects_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.Subject>();
                mutable_bitField0_ |= 0x00000002;
              }
              subjects_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.Subject.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              io.kubernetes.client.proto.V1Rbac.RoleRef.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = roleRef_.toBuilder();
              }
              roleRef_ = input.readMessage(io.kubernetes.client.proto.V1Rbac.RoleRef.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(roleRef_);
                roleRef_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          subjects_ = java.util.Collections.unmodifiableList(subjects_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBinding_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBinding_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.RoleBinding.class, io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ObjectMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int SUBJECTS_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> subjects_;
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> getSubjectsList() {
      return subjects_;
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
        getSubjectsOrBuilderList() {
      return subjects_;
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public int getSubjectsCount() {
      return subjects_.size();
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.Subject getSubjects(int index) {
      return subjects_.get(index);
    }
    /**
     * <pre>
     * Subjects holds references to the objects the role applies to.
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder getSubjectsOrBuilder(
        int index) {
      return subjects_.get(index);
    }

    public static final int ROLEREF_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1Rbac.RoleRef roleRef_;
    /**
     * <pre>
     * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    public boolean hasRoleRef() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.RoleRef getRoleRef() {
      return roleRef_ == null ? io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
    }
    /**
     * <pre>
     * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
     * If the RoleRef cannot be resolved, the Authorizer must return an error.
     * </pre>
     *
     * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder getRoleRefOrBuilder() {
      return roleRef_ == null ? io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < subjects_.size(); i++) {
        output.writeMessage(2, subjects_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(3, getRoleRef());
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < subjects_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, subjects_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getRoleRef());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.RoleBinding)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.RoleBinding other = (io.kubernetes.client.proto.V1Rbac.RoleBinding) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getSubjectsList()
          .equals(other.getSubjectsList());
      result = result && (hasRoleRef() == other.hasRoleRef());
      if (hasRoleRef()) {
        result = result && getRoleRef()
            .equals(other.getRoleRef());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getSubjectsCount() > 0) {
        hash = (37 * hash) + SUBJECTS_FIELD_NUMBER;
        hash = (53 * hash) + getSubjectsList().hashCode();
      }
      if (hasRoleRef()) {
        hash = (37 * hash) + ROLEREF_FIELD_NUMBER;
        hash = (53 * hash) + getRoleRef().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding 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 io.kubernetes.client.proto.V1Rbac.RoleBinding parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding 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 io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBinding parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.RoleBinding prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * RoleBinding references a role, but does not contain it.  It can reference a Role in the same namespace or a ClusterRole in the global namespace.
     * It adds who information via Subjects and namespace information by which namespace it exists in.  RoleBindings in a given
     * namespace only have effect in that namespace.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.RoleBinding}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.RoleBinding)
        io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBinding_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBinding_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.RoleBinding.class, io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.RoleBinding.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getSubjectsFieldBuilder();
          getRoleRefFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (subjectsBuilder_ == null) {
          subjects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          subjectsBuilder_.clear();
        }
        if (roleRefBuilder_ == null) {
          roleRef_ = null;
        } else {
          roleRefBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBinding_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleBinding getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.RoleBinding.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.RoleBinding build() {
        io.kubernetes.client.proto.V1Rbac.RoleBinding result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleBinding buildPartial() {
        io.kubernetes.client.proto.V1Rbac.RoleBinding result = new io.kubernetes.client.proto.V1Rbac.RoleBinding(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (subjectsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            subjects_ = java.util.Collections.unmodifiableList(subjects_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.subjects_ = subjects_;
        } else {
          result.subjects_ = subjectsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        if (roleRefBuilder_ == null) {
          result.roleRef_ = roleRef_;
        } else {
          result.roleRef_ = roleRefBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.RoleBinding) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.RoleBinding)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.RoleBinding other) {
        if (other == io.kubernetes.client.proto.V1Rbac.RoleBinding.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (subjectsBuilder_ == null) {
          if (!other.subjects_.isEmpty()) {
            if (subjects_.isEmpty()) {
              subjects_ = other.subjects_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSubjectsIsMutable();
              subjects_.addAll(other.subjects_);
            }
            onChanged();
          }
        } else {
          if (!other.subjects_.isEmpty()) {
            if (subjectsBuilder_.isEmpty()) {
              subjectsBuilder_.dispose();
              subjectsBuilder_ = null;
              subjects_ = other.subjects_;
              bitField0_ = (bitField0_ & ~0x00000002);
              subjectsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSubjectsFieldBuilder() : null;
            } else {
              subjectsBuilder_.addAllMessages(other.subjects_);
            }
          }
        }
        if (other.hasRoleRef()) {
          mergeRoleRef(other.getRoleRef());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.RoleBinding parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.RoleBinding) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ObjectMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ObjectMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ObjectMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ObjectMeta, io.kubernetes.client.proto.Meta.ObjectMeta.Builder, io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> subjects_ =
        java.util.Collections.emptyList();
      private void ensureSubjectsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          subjects_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.Subject>(subjects_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.Subject, io.kubernetes.client.proto.V1Rbac.Subject.Builder, io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> subjectsBuilder_;

      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.Subject> getSubjectsList() {
        if (subjectsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(subjects_);
        } else {
          return subjectsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public int getSubjectsCount() {
        if (subjectsBuilder_ == null) {
          return subjects_.size();
        } else {
          return subjectsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject getSubjects(int index) {
        if (subjectsBuilder_ == null) {
          return subjects_.get(index);
        } else {
          return subjectsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder setSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject value) {
        if (subjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectsIsMutable();
          subjects_.set(index, value);
          onChanged();
        } else {
          subjectsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder setSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject.Builder builderForValue) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.set(index, builderForValue.build());
          onChanged();
        } else {
          subjectsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(io.kubernetes.client.proto.V1Rbac.Subject value) {
        if (subjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectsIsMutable();
          subjects_.add(value);
          onChanged();
        } else {
          subjectsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject value) {
        if (subjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSubjectsIsMutable();
          subjects_.add(index, value);
          onChanged();
        } else {
          subjectsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(
          io.kubernetes.client.proto.V1Rbac.Subject.Builder builderForValue) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.add(builderForValue.build());
          onChanged();
        } else {
          subjectsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addSubjects(
          int index, io.kubernetes.client.proto.V1Rbac.Subject.Builder builderForValue) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.add(index, builderForValue.build());
          onChanged();
        } else {
          subjectsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder addAllSubjects(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.Subject> values) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, subjects_);
          onChanged();
        } else {
          subjectsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder clearSubjects() {
        if (subjectsBuilder_ == null) {
          subjects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          subjectsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public Builder removeSubjects(int index) {
        if (subjectsBuilder_ == null) {
          ensureSubjectsIsMutable();
          subjects_.remove(index);
          onChanged();
        } else {
          subjectsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject.Builder getSubjectsBuilder(
          int index) {
        return getSubjectsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder getSubjectsOrBuilder(
          int index) {
        if (subjectsBuilder_ == null) {
          return subjects_.get(index);  } else {
          return subjectsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
           getSubjectsOrBuilderList() {
        if (subjectsBuilder_ != null) {
          return subjectsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(subjects_);
        }
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject.Builder addSubjectsBuilder() {
        return getSubjectsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.Subject.getDefaultInstance());
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Subject.Builder addSubjectsBuilder(
          int index) {
        return getSubjectsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.Subject.getDefaultInstance());
      }
      /**
       * <pre>
       * Subjects holds references to the objects the role applies to.
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Subject subjects = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.Subject.Builder> 
           getSubjectsBuilderList() {
        return getSubjectsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.Subject, io.kubernetes.client.proto.V1Rbac.Subject.Builder, io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder> 
          getSubjectsFieldBuilder() {
        if (subjectsBuilder_ == null) {
          subjectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.Subject, io.kubernetes.client.proto.V1Rbac.Subject.Builder, io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder>(
                  subjects_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          subjects_ = null;
        }
        return subjectsBuilder_;
      }

      private io.kubernetes.client.proto.V1Rbac.RoleRef roleRef_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.RoleRef, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder, io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder> roleRefBuilder_;
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public boolean hasRoleRef() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleRef getRoleRef() {
        if (roleRefBuilder_ == null) {
          return roleRef_ == null ? io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
        } else {
          return roleRefBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder setRoleRef(io.kubernetes.client.proto.V1Rbac.RoleRef value) {
        if (roleRefBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          roleRef_ = value;
          onChanged();
        } else {
          roleRefBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder setRoleRef(
          io.kubernetes.client.proto.V1Rbac.RoleRef.Builder builderForValue) {
        if (roleRefBuilder_ == null) {
          roleRef_ = builderForValue.build();
          onChanged();
        } else {
          roleRefBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder mergeRoleRef(io.kubernetes.client.proto.V1Rbac.RoleRef value) {
        if (roleRefBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              roleRef_ != null &&
              roleRef_ != io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance()) {
            roleRef_ =
              io.kubernetes.client.proto.V1Rbac.RoleRef.newBuilder(roleRef_).mergeFrom(value).buildPartial();
          } else {
            roleRef_ = value;
          }
          onChanged();
        } else {
          roleRefBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public Builder clearRoleRef() {
        if (roleRefBuilder_ == null) {
          roleRef_ = null;
          onChanged();
        } else {
          roleRefBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleRef.Builder getRoleRefBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getRoleRefFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder getRoleRefOrBuilder() {
        if (roleRefBuilder_ != null) {
          return roleRefBuilder_.getMessageOrBuilder();
        } else {
          return roleRef_ == null ?
              io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance() : roleRef_;
        }
      }
      /**
       * <pre>
       * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace.
       * If the RoleRef cannot be resolved, the Authorizer must return an error.
       * </pre>
       *
       * <code>optional .k8s.io.api.rbac.v1.RoleRef roleRef = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.RoleRef, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder, io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder> 
          getRoleRefFieldBuilder() {
        if (roleRefBuilder_ == null) {
          roleRefBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.RoleRef, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder, io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder>(
                  getRoleRef(),
                  getParentForChildren(),
                  isClean());
          roleRef_ = null;
        }
        return roleRefBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.RoleBinding)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.RoleBinding)
    private static final io.kubernetes.client.proto.V1Rbac.RoleBinding DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.RoleBinding();
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleBinding getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<RoleBinding>
        PARSER = new com.google.protobuf.AbstractParser<RoleBinding>() {
      public RoleBinding parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RoleBinding(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.RoleBinding getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleBindingListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.RoleBindingList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.RoleBinding> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.RoleBinding getItems(int index);
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * RoleBindingList is a collection of RoleBindings
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.RoleBindingList}
   */
  public  static final class RoleBindingList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.RoleBindingList)
      RoleBindingListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleBindingList.newBuilder() to construct.
    private RoleBindingList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RoleBindingList() {
      items_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleBindingList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ListMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ListMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.RoleBinding>();
                mutable_bitField0_ |= 0x00000002;
              }
              items_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.RoleBinding.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = java.util.Collections.unmodifiableList(items_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBindingList_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBindingList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.RoleBindingList.class, io.kubernetes.client.proto.V1Rbac.RoleBindingList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.RoleBinding> items_;
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.RoleBinding> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.RoleBinding getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of RoleBindings
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.RoleBindingList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.RoleBindingList other = (io.kubernetes.client.proto.V1Rbac.RoleBindingList) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getItemsList()
          .equals(other.getItemsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList 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 io.kubernetes.client.proto.V1Rbac.RoleBindingList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList 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 io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.RoleBindingList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * RoleBindingList is a collection of RoleBindings
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.RoleBindingList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.RoleBindingList)
        io.kubernetes.client.proto.V1Rbac.RoleBindingListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBindingList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBindingList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.RoleBindingList.class, io.kubernetes.client.proto.V1Rbac.RoleBindingList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.RoleBindingList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getItemsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleBindingList_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleBindingList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.RoleBindingList.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.RoleBindingList build() {
        io.kubernetes.client.proto.V1Rbac.RoleBindingList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleBindingList buildPartial() {
        io.kubernetes.client.proto.V1Rbac.RoleBindingList result = new io.kubernetes.client.proto.V1Rbac.RoleBindingList(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (itemsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            items_ = java.util.Collections.unmodifiableList(items_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.items_ = items_;
        } else {
          result.items_ = itemsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.RoleBindingList) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.RoleBindingList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.RoleBindingList other) {
        if (other == io.kubernetes.client.proto.V1Rbac.RoleBindingList.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (itemsBuilder_ == null) {
          if (!other.items_.isEmpty()) {
            if (items_.isEmpty()) {
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureItemsIsMutable();
              items_.addAll(other.items_);
            }
            onChanged();
          }
        } else {
          if (!other.items_.isEmpty()) {
            if (itemsBuilder_.isEmpty()) {
              itemsBuilder_.dispose();
              itemsBuilder_ = null;
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
              itemsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getItemsFieldBuilder() : null;
            } else {
              itemsBuilder_.addAllMessages(other.items_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.RoleBindingList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.RoleBindingList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ListMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ListMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ListMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.RoleBinding> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.RoleBinding>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.RoleBinding, io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder, io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.RoleBinding> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleBinding getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.RoleBinding value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1Rbac.RoleBinding value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.RoleBinding value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.RoleBinding> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.RoleBinding.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.RoleBinding.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of RoleBindings
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.RoleBinding items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.RoleBinding, io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder, io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.RoleBinding, io.kubernetes.client.proto.V1Rbac.RoleBinding.Builder, io.kubernetes.client.proto.V1Rbac.RoleBindingOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.RoleBindingList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.RoleBindingList)
    private static final io.kubernetes.client.proto.V1Rbac.RoleBindingList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.RoleBindingList();
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleBindingList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<RoleBindingList>
        PARSER = new com.google.protobuf.AbstractParser<RoleBindingList>() {
      public RoleBindingList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RoleBindingList(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.RoleBindingList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.RoleList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1Rbac.Role> 
        getItemsList();
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.Role getItems(int index);
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1Rbac.RoleOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    io.kubernetes.client.proto.V1Rbac.RoleOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * RoleList is a collection of Roles
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.RoleList}
   */
  public  static final class RoleList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.RoleList)
      RoleListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleList.newBuilder() to construct.
    private RoleList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RoleList() {
      items_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              io.kubernetes.client.proto.Meta.ListMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(io.kubernetes.client.proto.Meta.ListMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.Role>();
                mutable_bitField0_ |= 0x00000002;
              }
              items_.add(
                  input.readMessage(io.kubernetes.client.proto.V1Rbac.Role.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = java.util.Collections.unmodifiableList(items_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleList_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.RoleList.class, io.kubernetes.client.proto.V1Rbac.RoleList.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.Meta.ListMeta metadata_;
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }

    public static final int ITEMS_FIELD_NUMBER = 2;
    private java.util.List<io.kubernetes.client.proto.V1Rbac.Role> items_;
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    public java.util.List<io.kubernetes.client.proto.V1Rbac.Role> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.RoleOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.Role getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * Items is a list of Roles
     * </pre>
     *
     * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
     */
    public io.kubernetes.client.proto.V1Rbac.RoleOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        output.writeMessage(2, items_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      for (int i = 0; i < items_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, items_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.RoleList)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.RoleList other = (io.kubernetes.client.proto.V1Rbac.RoleList) obj;

      boolean result = true;
      result = result && (hasMetadata() == other.hasMetadata());
      if (hasMetadata()) {
        result = result && getMetadata()
            .equals(other.getMetadata());
      }
      result = result && getItemsList()
          .equals(other.getItemsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (getItemsCount() > 0) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItemsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList 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 io.kubernetes.client.proto.V1Rbac.RoleList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList 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 io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.RoleList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * RoleList is a collection of Roles
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.RoleList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.RoleList)
        io.kubernetes.client.proto.V1Rbac.RoleListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.RoleList.class, io.kubernetes.client.proto.V1Rbac.RoleList.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.RoleList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getItemsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleList_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.RoleList.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.RoleList build() {
        io.kubernetes.client.proto.V1Rbac.RoleList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleList buildPartial() {
        io.kubernetes.client.proto.V1Rbac.RoleList result = new io.kubernetes.client.proto.V1Rbac.RoleList(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (itemsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            items_ = java.util.Collections.unmodifiableList(items_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.items_ = items_;
        } else {
          result.items_ = itemsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.RoleList) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.RoleList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.RoleList other) {
        if (other == io.kubernetes.client.proto.V1Rbac.RoleList.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (itemsBuilder_ == null) {
          if (!other.items_.isEmpty()) {
            if (items_.isEmpty()) {
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureItemsIsMutable();
              items_.addAll(other.items_);
            }
            onChanged();
          }
        } else {
          if (!other.items_.isEmpty()) {
            if (itemsBuilder_.isEmpty()) {
              itemsBuilder_.dispose();
              itemsBuilder_ = null;
              items_ = other.items_;
              bitField0_ = (bitField0_ & ~0x00000002);
              itemsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getItemsFieldBuilder() : null;
            } else {
              itemsBuilder_.addAllMessages(other.items_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.RoleList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.RoleList) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private io.kubernetes.client.proto.Meta.ListMeta metadata_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder setMetadata(
          io.kubernetes.client.proto.Meta.ListMeta.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder mergeMetadata(io.kubernetes.client.proto.Meta.ListMeta value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              metadata_ != null &&
              metadata_ != io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance()) {
            metadata_ =
              io.kubernetes.client.proto.Meta.ListMeta.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMeta.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public io.kubernetes.client.proto.Meta.ListMetaOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Standard object's metadata.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.kubernetes.client.proto.Meta.ListMeta, io.kubernetes.client.proto.Meta.ListMeta.Builder, io.kubernetes.client.proto.Meta.ListMetaOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1Rbac.Role> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1Rbac.Role>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.Role, io.kubernetes.client.proto.V1Rbac.Role.Builder, io.kubernetes.client.proto.V1Rbac.RoleOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.Role> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Role getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.Role value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.set(index, value);
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1Rbac.Role.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1Rbac.Role value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.Role value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(index, value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1Rbac.Role.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1Rbac.Role.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1Rbac.Role> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder clearItems() {
        if (itemsBuilder_ == null) {
          items_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          itemsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Role.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.RoleOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1Rbac.RoleOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Role.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1Rbac.Role.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public io.kubernetes.client.proto.V1Rbac.Role.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1Rbac.Role.getDefaultInstance());
      }
      /**
       * <pre>
       * Items is a list of Roles
       * </pre>
       *
       * <code>repeated .k8s.io.api.rbac.v1.Role items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1Rbac.Role.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.kubernetes.client.proto.V1Rbac.Role, io.kubernetes.client.proto.V1Rbac.Role.Builder, io.kubernetes.client.proto.V1Rbac.RoleOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.kubernetes.client.proto.V1Rbac.Role, io.kubernetes.client.proto.V1Rbac.Role.Builder, io.kubernetes.client.proto.V1Rbac.RoleOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.RoleList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.RoleList)
    private static final io.kubernetes.client.proto.V1Rbac.RoleList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.RoleList();
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<RoleList>
        PARSER = new com.google.protobuf.AbstractParser<RoleList>() {
      public RoleList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RoleList(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.RoleList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleRefOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.RoleRef)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * APIGroup is the group for the resource being referenced
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     */
    boolean hasApiGroup();
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     */
    java.lang.String getApiGroup();
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     */
    com.google.protobuf.ByteString
        getApiGroupBytes();

    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     */
    boolean hasKind();
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     */
    java.lang.String getKind();
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     */
    com.google.protobuf.ByteString
        getKindBytes();

    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   * RoleRef contains information that points to the role being used
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.RoleRef}
   */
  public  static final class RoleRef extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.RoleRef)
      RoleRefOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleRef.newBuilder() to construct.
    private RoleRef(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RoleRef() {
      apiGroup_ = "";
      kind_ = "";
      name_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleRef(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              apiGroup_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              kind_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              name_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleRef_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleRef_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.RoleRef.class, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder.class);
    }

    private int bitField0_;
    public static final int APIGROUP_FIELD_NUMBER = 1;
    private volatile java.lang.Object apiGroup_;
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     */
    public boolean hasApiGroup() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     */
    public java.lang.String getApiGroup() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          apiGroup_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * APIGroup is the group for the resource being referenced
     * </pre>
     *
     * <code>optional string apiGroup = 1;</code>
     */
    public com.google.protobuf.ByteString
        getApiGroupBytes() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiGroup_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KIND_FIELD_NUMBER = 2;
    private volatile java.lang.Object kind_;
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     */
    public boolean hasKind() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     */
    public java.lang.String getKind() {
      java.lang.Object ref = kind_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          kind_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Kind is the type of resource being referenced
     * </pre>
     *
     * <code>optional string kind = 2;</code>
     */
    public com.google.protobuf.ByteString
        getKindBytes() {
      java.lang.Object ref = kind_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        kind_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Name is the name of resource being referenced
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, apiGroup_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, kind_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, apiGroup_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, kind_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.RoleRef)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.RoleRef other = (io.kubernetes.client.proto.V1Rbac.RoleRef) obj;

      boolean result = true;
      result = result && (hasApiGroup() == other.hasApiGroup());
      if (hasApiGroup()) {
        result = result && getApiGroup()
            .equals(other.getApiGroup());
      }
      result = result && (hasKind() == other.hasKind());
      if (hasKind()) {
        result = result && getKind()
            .equals(other.getKind());
      }
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasApiGroup()) {
        hash = (37 * hash) + APIGROUP_FIELD_NUMBER;
        hash = (53 * hash) + getApiGroup().hashCode();
      }
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().hashCode();
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef 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 io.kubernetes.client.proto.V1Rbac.RoleRef parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef 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 io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.RoleRef parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.RoleRef prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * RoleRef contains information that points to the role being used
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.RoleRef}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.RoleRef)
        io.kubernetes.client.proto.V1Rbac.RoleRefOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleRef_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleRef_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.RoleRef.class, io.kubernetes.client.proto.V1Rbac.RoleRef.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.RoleRef.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        apiGroup_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        kind_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_RoleRef_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleRef getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.RoleRef build() {
        io.kubernetes.client.proto.V1Rbac.RoleRef result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.RoleRef buildPartial() {
        io.kubernetes.client.proto.V1Rbac.RoleRef result = new io.kubernetes.client.proto.V1Rbac.RoleRef(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.apiGroup_ = apiGroup_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.kind_ = kind_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.RoleRef) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.RoleRef)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.RoleRef other) {
        if (other == io.kubernetes.client.proto.V1Rbac.RoleRef.getDefaultInstance()) return this;
        if (other.hasApiGroup()) {
          bitField0_ |= 0x00000001;
          apiGroup_ = other.apiGroup_;
          onChanged();
        }
        if (other.hasKind()) {
          bitField0_ |= 0x00000002;
          kind_ = other.kind_;
          onChanged();
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000004;
          name_ = other.name_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.RoleRef parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.RoleRef) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object apiGroup_ = "";
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       */
      public boolean hasApiGroup() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       */
      public java.lang.String getApiGroup() {
        java.lang.Object ref = apiGroup_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            apiGroup_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       */
      public com.google.protobuf.ByteString
          getApiGroupBytes() {
        java.lang.Object ref = apiGroup_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiGroup_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       */
      public Builder setApiGroup(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        apiGroup_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       */
      public Builder clearApiGroup() {
        bitField0_ = (bitField0_ & ~0x00000001);
        apiGroup_ = getDefaultInstance().getApiGroup();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup is the group for the resource being referenced
       * </pre>
       *
       * <code>optional string apiGroup = 1;</code>
       */
      public Builder setApiGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        apiGroup_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object kind_ = "";
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       */
      public java.lang.String getKind() {
        java.lang.Object ref = kind_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            kind_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       */
      public com.google.protobuf.ByteString
          getKindBytes() {
        java.lang.Object ref = kind_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kind_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       */
      public Builder setKind(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        kind_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000002);
        kind_ = getDefaultInstance().getKind();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind is the type of resource being referenced
       * </pre>
       *
       * <code>optional string kind = 2;</code>
       */
      public Builder setKindBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        kind_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name is the name of resource being referenced
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.RoleRef)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.RoleRef)
    private static final io.kubernetes.client.proto.V1Rbac.RoleRef DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.RoleRef();
    }

    public static io.kubernetes.client.proto.V1Rbac.RoleRef getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<RoleRef>
        PARSER = new com.google.protobuf.AbstractParser<RoleRef>() {
      public RoleRef parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RoleRef(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.RoleRef getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SubjectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.api.rbac.v1.Subject)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
     * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     */
    boolean hasKind();
    /**
     * <pre>
     * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
     * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     */
    java.lang.String getKind();
    /**
     * <pre>
     * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
     * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     */
    com.google.protobuf.ByteString
        getKindBytes();

    /**
     * <pre>
     * APIGroup holds the API group of the referenced subject.
     * Defaults to "" for ServiceAccount subjects.
     * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 2;</code>
     */
    boolean hasApiGroup();
    /**
     * <pre>
     * APIGroup holds the API group of the referenced subject.
     * Defaults to "" for ServiceAccount subjects.
     * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 2;</code>
     */
    java.lang.String getApiGroup();
    /**
     * <pre>
     * APIGroup holds the API group of the referenced subject.
     * Defaults to "" for ServiceAccount subjects.
     * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 2;</code>
     */
    com.google.protobuf.ByteString
        getApiGroupBytes();

    /**
     * <pre>
     * Name of the object being referenced.
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    boolean hasName();
    /**
     * <pre>
     * Name of the object being referenced.
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the object being referenced.
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
     * the Authorizer should report an error.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     */
    boolean hasNamespace();
    /**
     * <pre>
     * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
     * the Authorizer should report an error.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     */
    java.lang.String getNamespace();
    /**
     * <pre>
     * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
     * the Authorizer should report an error.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();
  }
  /**
   * <pre>
   * Subject contains a reference to the object or user identities a role binding applies to.  This can either hold a direct API object reference,
   * or a value for non-objects such as user and group names.
   * </pre>
   *
   * Protobuf type {@code k8s.io.api.rbac.v1.Subject}
   */
  public  static final class Subject extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:k8s.io.api.rbac.v1.Subject)
      SubjectOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Subject.newBuilder() to construct.
    private Subject(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Subject() {
      kind_ = "";
      apiGroup_ = "";
      name_ = "";
      namespace_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Subject(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              kind_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              apiGroup_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              name_ = bs;
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000008;
              namespace_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Subject_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Subject_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1Rbac.Subject.class, io.kubernetes.client.proto.V1Rbac.Subject.Builder.class);
    }

    private int bitField0_;
    public static final int KIND_FIELD_NUMBER = 1;
    private volatile java.lang.Object kind_;
    /**
     * <pre>
     * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
     * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     */
    public boolean hasKind() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <pre>
     * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
     * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     */
    public java.lang.String getKind() {
      java.lang.Object ref = kind_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          kind_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
     * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
     * </pre>
     *
     * <code>optional string kind = 1;</code>
     */
    public com.google.protobuf.ByteString
        getKindBytes() {
      java.lang.Object ref = kind_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        kind_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int APIGROUP_FIELD_NUMBER = 2;
    private volatile java.lang.Object apiGroup_;
    /**
     * <pre>
     * APIGroup holds the API group of the referenced subject.
     * Defaults to "" for ServiceAccount subjects.
     * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 2;</code>
     */
    public boolean hasApiGroup() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <pre>
     * APIGroup holds the API group of the referenced subject.
     * Defaults to "" for ServiceAccount subjects.
     * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 2;</code>
     */
    public java.lang.String getApiGroup() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          apiGroup_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * APIGroup holds the API group of the referenced subject.
     * Defaults to "" for ServiceAccount subjects.
     * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
     * +optional
     * </pre>
     *
     * <code>optional string apiGroup = 2;</code>
     */
    public com.google.protobuf.ByteString
        getApiGroupBytes() {
      java.lang.Object ref = apiGroup_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiGroup_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name of the object being referenced.
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <pre>
     * Name of the object being referenced.
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Name of the object being referenced.
     * </pre>
     *
     * <code>optional string name = 3;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAMESPACE_FIELD_NUMBER = 4;
    private volatile java.lang.Object namespace_;
    /**
     * <pre>
     * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
     * the Authorizer should report an error.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     */
    public boolean hasNamespace() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <pre>
     * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
     * the Authorizer should report an error.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     */
    public java.lang.String getNamespace() {
      java.lang.Object ref = namespace_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          namespace_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
     * the Authorizer should report an error.
     * +optional
     * </pre>
     *
     * <code>optional string namespace = 4;</code>
     */
    public com.google.protobuf.ByteString
        getNamespaceBytes() {
      java.lang.Object ref = namespace_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        namespace_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, kind_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, apiGroup_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, namespace_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, kind_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, apiGroup_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, namespace_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.kubernetes.client.proto.V1Rbac.Subject)) {
        return super.equals(obj);
      }
      io.kubernetes.client.proto.V1Rbac.Subject other = (io.kubernetes.client.proto.V1Rbac.Subject) obj;

      boolean result = true;
      result = result && (hasKind() == other.hasKind());
      if (hasKind()) {
        result = result && getKind()
            .equals(other.getKind());
      }
      result = result && (hasApiGroup() == other.hasApiGroup());
      if (hasApiGroup()) {
        result = result && getApiGroup()
            .equals(other.getApiGroup());
      }
      result = result && (hasName() == other.hasName());
      if (hasName()) {
        result = result && getName()
            .equals(other.getName());
      }
      result = result && (hasNamespace() == other.hasNamespace());
      if (hasNamespace()) {
        result = result && getNamespace()
            .equals(other.getNamespace());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().hashCode();
      }
      if (hasApiGroup()) {
        hash = (37 * hash) + APIGROUP_FIELD_NUMBER;
        hash = (53 * hash) + getApiGroup().hashCode();
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasNamespace()) {
        hash = (37 * hash) + NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getNamespace().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject 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 io.kubernetes.client.proto.V1Rbac.Subject parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject 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 io.kubernetes.client.proto.V1Rbac.Subject parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1Rbac.Subject parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1Rbac.Subject prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    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>
     * Subject contains a reference to the object or user identities a role binding applies to.  This can either hold a direct API object reference,
     * or a value for non-objects such as user and group names.
     * </pre>
     *
     * Protobuf type {@code k8s.io.api.rbac.v1.Subject}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.api.rbac.v1.Subject)
        io.kubernetes.client.proto.V1Rbac.SubjectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Subject_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Subject_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1Rbac.Subject.class, io.kubernetes.client.proto.V1Rbac.Subject.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1Rbac.Subject.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        kind_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        apiGroup_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        namespace_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1Rbac.internal_static_k8s_io_api_rbac_v1_Subject_descriptor;
      }

      public io.kubernetes.client.proto.V1Rbac.Subject getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1Rbac.Subject.getDefaultInstance();
      }

      public io.kubernetes.client.proto.V1Rbac.Subject build() {
        io.kubernetes.client.proto.V1Rbac.Subject result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public io.kubernetes.client.proto.V1Rbac.Subject buildPartial() {
        io.kubernetes.client.proto.V1Rbac.Subject result = new io.kubernetes.client.proto.V1Rbac.Subject(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.kind_ = kind_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.apiGroup_ = apiGroup_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.namespace_ = namespace_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1Rbac.Subject) {
          return mergeFrom((io.kubernetes.client.proto.V1Rbac.Subject)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1Rbac.Subject other) {
        if (other == io.kubernetes.client.proto.V1Rbac.Subject.getDefaultInstance()) return this;
        if (other.hasKind()) {
          bitField0_ |= 0x00000001;
          kind_ = other.kind_;
          onChanged();
        }
        if (other.hasApiGroup()) {
          bitField0_ |= 0x00000002;
          apiGroup_ = other.apiGroup_;
          onChanged();
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000004;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasNamespace()) {
          bitField0_ |= 0x00000008;
          namespace_ = other.namespace_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.kubernetes.client.proto.V1Rbac.Subject parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.kubernetes.client.proto.V1Rbac.Subject) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object kind_ = "";
      /**
       * <pre>
       * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
       * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <pre>
       * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
       * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       */
      public java.lang.String getKind() {
        java.lang.Object ref = kind_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            kind_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
       * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       */
      public com.google.protobuf.ByteString
          getKindBytes() {
        java.lang.Object ref = kind_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          kind_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
       * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       */
      public Builder setKind(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        kind_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
       * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       */
      public Builder clearKind() {
        bitField0_ = (bitField0_ & ~0x00000001);
        kind_ = getDefaultInstance().getKind();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
       * If the Authorizer does not recognized the kind value, the Authorizer should report an error.
       * </pre>
       *
       * <code>optional string kind = 1;</code>
       */
      public Builder setKindBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        kind_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object apiGroup_ = "";
      /**
       * <pre>
       * APIGroup holds the API group of the referenced subject.
       * Defaults to "" for ServiceAccount subjects.
       * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 2;</code>
       */
      public boolean hasApiGroup() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <pre>
       * APIGroup holds the API group of the referenced subject.
       * Defaults to "" for ServiceAccount subjects.
       * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 2;</code>
       */
      public java.lang.String getApiGroup() {
        java.lang.Object ref = apiGroup_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            apiGroup_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * APIGroup holds the API group of the referenced subject.
       * Defaults to "" for ServiceAccount subjects.
       * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 2;</code>
       */
      public com.google.protobuf.ByteString
          getApiGroupBytes() {
        java.lang.Object ref = apiGroup_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiGroup_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * APIGroup holds the API group of the referenced subject.
       * Defaults to "" for ServiceAccount subjects.
       * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 2;</code>
       */
      public Builder setApiGroup(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        apiGroup_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup holds the API group of the referenced subject.
       * Defaults to "" for ServiceAccount subjects.
       * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 2;</code>
       */
      public Builder clearApiGroup() {
        bitField0_ = (bitField0_ & ~0x00000002);
        apiGroup_ = getDefaultInstance().getApiGroup();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * APIGroup holds the API group of the referenced subject.
       * Defaults to "" for ServiceAccount subjects.
       * Defaults to "rbac.authorization.k8s.io" for User and Group subjects.
       * +optional
       * </pre>
       *
       * <code>optional string apiGroup = 2;</code>
       */
      public Builder setApiGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        apiGroup_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the object being referenced.
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <pre>
       * Name of the object being referenced.
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the object being referenced.
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the object being referenced.
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the object being referenced.
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000004);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the object being referenced.
       * </pre>
       *
       * <code>optional string name = 3;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object namespace_ = "";
      /**
       * <pre>
       * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
       * the Authorizer should report an error.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       */
      public boolean hasNamespace() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <pre>
       * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
       * the Authorizer should report an error.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       */
      public java.lang.String getNamespace() {
        java.lang.Object ref = namespace_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            namespace_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
       * the Authorizer should report an error.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       */
      public com.google.protobuf.ByteString
          getNamespaceBytes() {
        java.lang.Object ref = namespace_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          namespace_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
       * the Authorizer should report an error.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       */
      public Builder setNamespace(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        namespace_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
       * the Authorizer should report an error.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       */
      public Builder clearNamespace() {
        bitField0_ = (bitField0_ & ~0x00000008);
        namespace_ = getDefaultInstance().getNamespace();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
       * the Authorizer should report an error.
       * +optional
       * </pre>
       *
       * <code>optional string namespace = 4;</code>
       */
      public Builder setNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        namespace_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:k8s.io.api.rbac.v1.Subject)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.api.rbac.v1.Subject)
    private static final io.kubernetes.client.proto.V1Rbac.Subject DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1Rbac.Subject();
    }

    public static io.kubernetes.client.proto.V1Rbac.Subject getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Subject>
        PARSER = new com.google.protobuf.AbstractParser<Subject>() {
      public Subject parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new Subject(input, extensionRegistry);
      }
    };

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

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

    public io.kubernetes.client.proto.V1Rbac.Subject getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_ClusterRole_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_ClusterRole_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_ClusterRoleList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_ClusterRoleList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_PolicyRule_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_PolicyRule_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_Role_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_Role_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_RoleBinding_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_RoleBinding_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_RoleBindingList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_RoleBindingList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_RoleList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_RoleList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_RoleRef_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_RoleRef_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_api_rbac_v1_Subject_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_k8s_io_api_rbac_v1_Subject_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\"k8s.io/api/rbac/v1/generated.proto\022\022k8" +
      "s.io.api.rbac.v1\0324k8s.io/apimachinery/pk" +
      "g/apis/meta/v1/generated.proto\032/k8s.io/a" +
      "pimachinery/pkg/runtime/generated.proto\032" +
      "6k8s.io/apimachinery/pkg/runtime/schema/" +
      "generated.proto\0323k8s.io/apimachinery/pkg" +
      "/util/intstr/generated.proto\"\200\001\n\013Cluster" +
      "Role\022B\n\010metadata\030\001 \001(\01320.k8s.io.apimachi" +
      "nery.pkg.apis.meta.v1.ObjectMeta\022-\n\005rule" +
      "s\030\002 \003(\0132\036.k8s.io.api.rbac.v1.PolicyRule\"",
      "\265\001\n\022ClusterRoleBinding\022B\n\010metadata\030\001 \001(\013" +
      "20.k8s.io.apimachinery.pkg.apis.meta.v1." +
      "ObjectMeta\022-\n\010subjects\030\002 \003(\0132\033.k8s.io.ap" +
      "i.rbac.v1.Subject\022,\n\007roleRef\030\003 \001(\0132\033.k8s" +
      ".io.api.rbac.v1.RoleRef\"\221\001\n\026ClusterRoleB" +
      "indingList\022@\n\010metadata\030\001 \001(\0132..k8s.io.ap" +
      "imachinery.pkg.apis.meta.v1.ListMeta\0225\n\005" +
      "items\030\002 \003(\0132&.k8s.io.api.rbac.v1.Cluster" +
      "RoleBinding\"\203\001\n\017ClusterRoleList\022@\n\010metad" +
      "ata\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis",
      ".meta.v1.ListMeta\022.\n\005items\030\002 \003(\0132\037.k8s.i" +
      "o.api.rbac.v1.ClusterRole\"q\n\nPolicyRule\022" +
      "\r\n\005verbs\030\001 \003(\t\022\021\n\tapiGroups\030\002 \003(\t\022\021\n\tres" +
      "ources\030\003 \003(\t\022\025\n\rresourceNames\030\004 \003(\t\022\027\n\017n" +
      "onResourceURLs\030\005 \003(\t\"y\n\004Role\022B\n\010metadata" +
      "\030\001 \001(\01320.k8s.io.apimachinery.pkg.apis.me" +
      "ta.v1.ObjectMeta\022-\n\005rules\030\002 \003(\0132\036.k8s.io" +
      ".api.rbac.v1.PolicyRule\"\256\001\n\013RoleBinding\022" +
      "B\n\010metadata\030\001 \001(\01320.k8s.io.apimachinery." +
      "pkg.apis.meta.v1.ObjectMeta\022-\n\010subjects\030",
      "\002 \003(\0132\033.k8s.io.api.rbac.v1.Subject\022,\n\007ro" +
      "leRef\030\003 \001(\0132\033.k8s.io.api.rbac.v1.RoleRef" +
      "\"\203\001\n\017RoleBindingList\022@\n\010metadata\030\001 \001(\0132." +
      ".k8s.io.apimachinery.pkg.apis.meta.v1.Li" +
      "stMeta\022.\n\005items\030\002 \003(\0132\037.k8s.io.api.rbac." +
      "v1.RoleBinding\"u\n\010RoleList\022@\n\010metadata\030\001" +
      " \001(\0132..k8s.io.apimachinery.pkg.apis.meta" +
      ".v1.ListMeta\022\'\n\005items\030\002 \003(\0132\030.k8s.io.api" +
      ".rbac.v1.Role\"7\n\007RoleRef\022\020\n\010apiGroup\030\001 \001" +
      "(\t\022\014\n\004kind\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\"J\n\007Subjec",
      "t\022\014\n\004kind\030\001 \001(\t\022\020\n\010apiGroup\030\002 \001(\t\022\014\n\004nam" +
      "e\030\003 \001(\t\022\021\n\tnamespace\030\004 \001(\tB(\n\032io.kuberne" +
      "tes.client.protoB\006V1RbacZ\002v1"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          io.kubernetes.client.proto.Meta.getDescriptor(),
          io.kubernetes.client.proto.Runtime.getDescriptor(),
          io.kubernetes.client.proto.RuntimeSchema.getDescriptor(),
          io.kubernetes.client.proto.IntStr.getDescriptor(),
        }, assigner);
    internal_static_k8s_io_api_rbac_v1_ClusterRole_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_k8s_io_api_rbac_v1_ClusterRole_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_ClusterRole_descriptor,
        new java.lang.String[] { "Metadata", "Rules", });
    internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_ClusterRoleBinding_descriptor,
        new java.lang.String[] { "Metadata", "Subjects", "RoleRef", });
    internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_ClusterRoleBindingList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_rbac_v1_ClusterRoleList_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_k8s_io_api_rbac_v1_ClusterRoleList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_ClusterRoleList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_rbac_v1_PolicyRule_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_k8s_io_api_rbac_v1_PolicyRule_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_PolicyRule_descriptor,
        new java.lang.String[] { "Verbs", "ApiGroups", "Resources", "ResourceNames", "NonResourceURLs", });
    internal_static_k8s_io_api_rbac_v1_Role_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_k8s_io_api_rbac_v1_Role_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_Role_descriptor,
        new java.lang.String[] { "Metadata", "Rules", });
    internal_static_k8s_io_api_rbac_v1_RoleBinding_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_k8s_io_api_rbac_v1_RoleBinding_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_RoleBinding_descriptor,
        new java.lang.String[] { "Metadata", "Subjects", "RoleRef", });
    internal_static_k8s_io_api_rbac_v1_RoleBindingList_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_k8s_io_api_rbac_v1_RoleBindingList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_RoleBindingList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_rbac_v1_RoleList_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_k8s_io_api_rbac_v1_RoleList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_RoleList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_api_rbac_v1_RoleRef_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_k8s_io_api_rbac_v1_RoleRef_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_RoleRef_descriptor,
        new java.lang.String[] { "ApiGroup", "Kind", "Name", });
    internal_static_k8s_io_api_rbac_v1_Subject_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_k8s_io_api_rbac_v1_Subject_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_k8s_io_api_rbac_v1_Subject_descriptor,
        new java.lang.String[] { "Kind", "ApiGroup", "Name", "Namespace", });
    io.kubernetes.client.proto.Meta.getDescriptor();
    io.kubernetes.client.proto.Runtime.getDescriptor();
    io.kubernetes.client.proto.RuntimeSchema.getDescriptor();
    io.kubernetes.client.proto.IntStr.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
