// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto
// Protobuf Java Version: 4.26.1

package io.kubernetes.client.proto;

public final class V1beta1Apiextensions {
  private V1beta1Apiextensions() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 26,
      /* patch= */ 1,
      /* suffix= */ "",
      V1beta1Apiextensions.class.getName());
  }
  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 ConversionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
     * otherwise identical (parallel requests, etc).
     * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
     * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return Whether the uid field is set.
     */
    boolean hasUid();
    /**
     * <pre>
     * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
     * otherwise identical (parallel requests, etc).
     * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
     * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The uid.
     */
    java.lang.String getUid();
    /**
     * <pre>
     * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
     * otherwise identical (parallel requests, etc).
     * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
     * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The bytes for uid.
     */
    com.google.protobuf.ByteString
        getUidBytes();

    /**
     * <pre>
     * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     * </pre>
     *
     * <code>optional string desiredAPIVersion = 2;</code>
     * @return Whether the desiredAPIVersion field is set.
     */
    boolean hasDesiredAPIVersion();
    /**
     * <pre>
     * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     * </pre>
     *
     * <code>optional string desiredAPIVersion = 2;</code>
     * @return The desiredAPIVersion.
     */
    java.lang.String getDesiredAPIVersion();
    /**
     * <pre>
     * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     * </pre>
     *
     * <code>optional string desiredAPIVersion = 2;</code>
     * @return The bytes for desiredAPIVersion.
     */
    com.google.protobuf.ByteString
        getDesiredAPIVersionBytes();

    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> 
        getObjectsList();
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtension getObjects(int index);
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    int getObjectsCount();
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
        getObjectsOrBuilderList();
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getObjectsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * ConversionRequest describes the conversion request parameters.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest}
   */
  public static final class ConversionRequest extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest)
      ConversionRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        ConversionRequest.class.getName());
    }
    // Use ConversionRequest.newBuilder() to construct.
    private ConversionRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConversionRequest() {
      uid_ = "";
      desiredAPIVersion_ = "";
      objects_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.class, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.Builder.class);
    }

    private int bitField0_;
    public static final int UID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object uid_ = "";
    /**
     * <pre>
     * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
     * otherwise identical (parallel requests, etc).
     * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
     * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return Whether the uid field is set.
     */
    @java.lang.Override
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
     * otherwise identical (parallel requests, etc).
     * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
     * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The uid.
     */
    @java.lang.Override
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
     * otherwise identical (parallel requests, etc).
     * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
     * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The bytes for uid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESIREDAPIVERSION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object desiredAPIVersion_ = "";
    /**
     * <pre>
     * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     * </pre>
     *
     * <code>optional string desiredAPIVersion = 2;</code>
     * @return Whether the desiredAPIVersion field is set.
     */
    @java.lang.Override
    public boolean hasDesiredAPIVersion() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     * </pre>
     *
     * <code>optional string desiredAPIVersion = 2;</code>
     * @return The desiredAPIVersion.
     */
    @java.lang.Override
    public java.lang.String getDesiredAPIVersion() {
      java.lang.Object ref = desiredAPIVersion_;
      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()) {
          desiredAPIVersion_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
     * </pre>
     *
     * <code>optional string desiredAPIVersion = 2;</code>
     * @return The bytes for desiredAPIVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDesiredAPIVersionBytes() {
      java.lang.Object ref = desiredAPIVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        desiredAPIVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OBJECTS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> objects_;
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> getObjectsList() {
      return objects_;
    }
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
        getObjectsOrBuilderList() {
      return objects_;
    }
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    @java.lang.Override
    public int getObjectsCount() {
      return objects_.size();
    }
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtension getObjects(int index) {
      return objects_.get(index);
    }
    /**
     * <pre>
     * objects is the list of custom resource objects to be converted.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getObjectsOrBuilder(
        int index) {
      return objects_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, uid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, desiredAPIVersion_);
      }
      for (int i = 0; i < objects_.size(); i++) {
        output.writeMessage(3, objects_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, uid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, desiredAPIVersion_);
      }
      for (int i = 0; i < objects_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, objects_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasUid() != other.hasUid()) return false;
      if (hasUid()) {
        if (!getUid()
            .equals(other.getUid())) return false;
      }
      if (hasDesiredAPIVersion() != other.hasDesiredAPIVersion()) return false;
      if (hasDesiredAPIVersion()) {
        if (!getDesiredAPIVersion()
            .equals(other.getDesiredAPIVersion())) return false;
      }
      if (!getObjectsList()
          .equals(other.getObjectsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUid()) {
        hash = (37 * hash) + UID_FIELD_NUMBER;
        hash = (53 * hash) + getUid().hashCode();
      }
      if (hasDesiredAPIVersion()) {
        hash = (37 * hash) + DESIREDAPIVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getDesiredAPIVersion().hashCode();
      }
      if (getObjectsCount() > 0) {
        hash = (37 * hash) + OBJECTS_FIELD_NUMBER;
        hash = (53 * hash) + getObjectsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ConversionRequest describes the conversion request parameters.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest)
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.class, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        uid_ = "";
        desiredAPIVersion_ = "";
        if (objectsBuilder_ == null) {
          objects_ = java.util.Collections.emptyList();
        } else {
          objects_ = null;
          objectsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest result = new io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest result) {
        if (objectsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            objects_ = java.util.Collections.unmodifiableList(objects_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.objects_ = objects_;
        } else {
          result.objects_ = objectsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uid_ = uid_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.desiredAPIVersion_ = desiredAPIVersion_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.getDefaultInstance()) return this;
        if (other.hasUid()) {
          uid_ = other.uid_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasDesiredAPIVersion()) {
          desiredAPIVersion_ = other.desiredAPIVersion_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (objectsBuilder_ == null) {
          if (!other.objects_.isEmpty()) {
            if (objects_.isEmpty()) {
              objects_ = other.objects_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureObjectsIsMutable();
              objects_.addAll(other.objects_);
            }
            onChanged();
          }
        } else {
          if (!other.objects_.isEmpty()) {
            if (objectsBuilder_.isEmpty()) {
              objectsBuilder_.dispose();
              objectsBuilder_ = null;
              objects_ = other.objects_;
              bitField0_ = (bitField0_ & ~0x00000004);
              objectsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getObjectsFieldBuilder() : null;
            } else {
              objectsBuilder_.addAllMessages(other.objects_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                uid_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                desiredAPIVersion_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                io.kubernetes.client.proto.Runtime.RawExtension m =
                    input.readMessage(
                        io.kubernetes.client.proto.Runtime.RawExtension.parser(),
                        extensionRegistry);
                if (objectsBuilder_ == null) {
                  ensureObjectsIsMutable();
                  objects_.add(m);
                } else {
                  objectsBuilder_.addMessage(m);
                }
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object uid_ = "";
      /**
       * <pre>
       * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
       * otherwise identical (parallel requests, etc).
       * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
       * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return Whether the uid field is set.
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
       * otherwise identical (parallel requests, etc).
       * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
       * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return The uid.
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        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()) {
            uid_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
       * otherwise identical (parallel requests, etc).
       * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
       * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return The bytes for uid.
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
       * otherwise identical (parallel requests, etc).
       * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
       * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @param value The uid to set.
       * @return This builder for chaining.
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        uid_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
       * otherwise identical (parallel requests, etc).
       * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
       * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUid() {
        uid_ = getDefaultInstance().getUid();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response. It allows distinguishing instances of requests which are
       * otherwise identical (parallel requests, etc).
       * The UID is meant to track the round trip (request/response) between the Kubernetes API server and the webhook, not the user request.
       * It is suitable for correlating log entries between the webhook and apiserver, for either auditing or debugging.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @param value The bytes for uid to set.
       * @return This builder for chaining.
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        uid_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object desiredAPIVersion_ = "";
      /**
       * <pre>
       * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
       * </pre>
       *
       * <code>optional string desiredAPIVersion = 2;</code>
       * @return Whether the desiredAPIVersion field is set.
       */
      public boolean hasDesiredAPIVersion() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
       * </pre>
       *
       * <code>optional string desiredAPIVersion = 2;</code>
       * @return The desiredAPIVersion.
       */
      public java.lang.String getDesiredAPIVersion() {
        java.lang.Object ref = desiredAPIVersion_;
        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()) {
            desiredAPIVersion_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
       * </pre>
       *
       * <code>optional string desiredAPIVersion = 2;</code>
       * @return The bytes for desiredAPIVersion.
       */
      public com.google.protobuf.ByteString
          getDesiredAPIVersionBytes() {
        java.lang.Object ref = desiredAPIVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          desiredAPIVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
       * </pre>
       *
       * <code>optional string desiredAPIVersion = 2;</code>
       * @param value The desiredAPIVersion to set.
       * @return This builder for chaining.
       */
      public Builder setDesiredAPIVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        desiredAPIVersion_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
       * </pre>
       *
       * <code>optional string desiredAPIVersion = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDesiredAPIVersion() {
        desiredAPIVersion_ = getDefaultInstance().getDesiredAPIVersion();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * desiredAPIVersion is the version to convert given objects to. e.g. "myapi.example.com/v1"
       * </pre>
       *
       * <code>optional string desiredAPIVersion = 2;</code>
       * @param value The bytes for desiredAPIVersion to set.
       * @return This builder for chaining.
       */
      public Builder setDesiredAPIVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        desiredAPIVersion_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> objects_ =
        java.util.Collections.emptyList();
      private void ensureObjectsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          objects_ = new java.util.ArrayList<io.kubernetes.client.proto.Runtime.RawExtension>(objects_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> objectsBuilder_;

      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> getObjectsList() {
        if (objectsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(objects_);
        } else {
          return objectsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public int getObjectsCount() {
        if (objectsBuilder_ == null) {
          return objects_.size();
        } else {
          return objectsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension getObjects(int index) {
        if (objectsBuilder_ == null) {
          return objects_.get(index);
        } else {
          return objectsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder setObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (objectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectsIsMutable();
          objects_.set(index, value);
          onChanged();
        } else {
          objectsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder setObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.set(index, builderForValue.build());
          onChanged();
        } else {
          objectsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder addObjects(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (objectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectsIsMutable();
          objects_.add(value);
          onChanged();
        } else {
          objectsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder addObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (objectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectsIsMutable();
          objects_.add(index, value);
          onChanged();
        } else {
          objectsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder addObjects(
          io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.add(builderForValue.build());
          onChanged();
        } else {
          objectsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder addObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.add(index, builderForValue.build());
          onChanged();
        } else {
          objectsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder addAllObjects(
          java.lang.Iterable<? extends io.kubernetes.client.proto.Runtime.RawExtension> values) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, objects_);
          onChanged();
        } else {
          objectsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder clearObjects() {
        if (objectsBuilder_ == null) {
          objects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          objectsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public Builder removeObjects(int index) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.remove(index);
          onChanged();
        } else {
          objectsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder getObjectsBuilder(
          int index) {
        return getObjectsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getObjectsOrBuilder(
          int index) {
        if (objectsBuilder_ == null) {
          return objects_.get(index);  } else {
          return objectsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
           getObjectsOrBuilderList() {
        if (objectsBuilder_ != null) {
          return objectsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(objects_);
        }
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder addObjectsBuilder() {
        return getObjectsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance());
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder addObjectsBuilder(
          int index) {
        return getObjectsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance());
      }
      /**
       * <pre>
       * objects is the list of custom resource objects to be converted.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension objects = 3;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension.Builder> 
           getObjectsBuilderList() {
        return getObjectsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
          getObjectsFieldBuilder() {
        if (objectsBuilder_ == null) {
          objectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder>(
                  objects_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          objects_ = null;
        }
        return objectsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConversionResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * uid is an identifier for the individual request/response.
     * This should be copied over from the corresponding `request.uid`.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return Whether the uid field is set.
     */
    boolean hasUid();
    /**
     * <pre>
     * uid is an identifier for the individual request/response.
     * This should be copied over from the corresponding `request.uid`.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The uid.
     */
    java.lang.String getUid();
    /**
     * <pre>
     * uid is an identifier for the individual request/response.
     * This should be copied over from the corresponding `request.uid`.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The bytes for uid.
     */
    com.google.protobuf.ByteString
        getUidBytes();

    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> 
        getConvertedObjectsList();
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtension getConvertedObjects(int index);
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    int getConvertedObjectsCount();
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
        getConvertedObjectsOrBuilderList();
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getConvertedObjectsOrBuilder(
        int index);

    /**
     * <pre>
     * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
     * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
     * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
     * will be used to construct an error message for the end user.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
     * @return Whether the result field is set.
     */
    boolean hasResult();
    /**
     * <pre>
     * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
     * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
     * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
     * will be used to construct an error message for the end user.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
     * @return The result.
     */
    io.kubernetes.client.proto.Meta.Status getResult();
    /**
     * <pre>
     * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
     * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
     * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
     * will be used to construct an error message for the end user.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
     */
    io.kubernetes.client.proto.Meta.StatusOrBuilder getResultOrBuilder();
  }
  /**
   * <pre>
   * ConversionResponse describes a conversion response.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse}
   */
  public static final class ConversionResponse extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse)
      ConversionResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        ConversionResponse.class.getName());
    }
    // Use ConversionResponse.newBuilder() to construct.
    private ConversionResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConversionResponse() {
      uid_ = "";
      convertedObjects_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.class, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.Builder.class);
    }

    private int bitField0_;
    public static final int UID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object uid_ = "";
    /**
     * <pre>
     * uid is an identifier for the individual request/response.
     * This should be copied over from the corresponding `request.uid`.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return Whether the uid field is set.
     */
    @java.lang.Override
    public boolean hasUid() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * uid is an identifier for the individual request/response.
     * This should be copied over from the corresponding `request.uid`.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The uid.
     */
    @java.lang.Override
    public java.lang.String getUid() {
      java.lang.Object ref = uid_;
      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()) {
          uid_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * uid is an identifier for the individual request/response.
     * This should be copied over from the corresponding `request.uid`.
     * </pre>
     *
     * <code>optional string uid = 1;</code>
     * @return The bytes for uid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUidBytes() {
      java.lang.Object ref = uid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONVERTEDOBJECTS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> convertedObjects_;
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> getConvertedObjectsList() {
      return convertedObjects_;
    }
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
        getConvertedObjectsOrBuilderList() {
      return convertedObjects_;
    }
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    @java.lang.Override
    public int getConvertedObjectsCount() {
      return convertedObjects_.size();
    }
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtension getConvertedObjects(int index) {
      return convertedObjects_.get(index);
    }
    /**
     * <pre>
     * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
     * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
     * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
     * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getConvertedObjectsOrBuilder(
        int index) {
      return convertedObjects_.get(index);
    }

    public static final int RESULT_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.Status result_;
    /**
     * <pre>
     * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
     * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
     * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
     * will be used to construct an error message for the end user.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
     * @return Whether the result field is set.
     */
    @java.lang.Override
    public boolean hasResult() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
     * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
     * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
     * will be used to construct an error message for the end user.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
     * @return The result.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Status getResult() {
      return result_ == null ? io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : result_;
    }
    /**
     * <pre>
     * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
     * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
     * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
     * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
     * will be used to construct an error message for the end user.
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.StatusOrBuilder getResultOrBuilder() {
      return result_ == null ? io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : result_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, uid_);
      }
      for (int i = 0; i < convertedObjects_.size(); i++) {
        output.writeMessage(2, convertedObjects_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getResult());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, uid_);
      }
      for (int i = 0; i < convertedObjects_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, convertedObjects_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getResult());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasUid() != other.hasUid()) return false;
      if (hasUid()) {
        if (!getUid()
            .equals(other.getUid())) return false;
      }
      if (!getConvertedObjectsList()
          .equals(other.getConvertedObjectsList())) return false;
      if (hasResult() != other.hasResult()) return false;
      if (hasResult()) {
        if (!getResult()
            .equals(other.getResult())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUid()) {
        hash = (37 * hash) + UID_FIELD_NUMBER;
        hash = (53 * hash) + getUid().hashCode();
      }
      if (getConvertedObjectsCount() > 0) {
        hash = (37 * hash) + CONVERTEDOBJECTS_FIELD_NUMBER;
        hash = (53 * hash) + getConvertedObjectsList().hashCode();
      }
      if (hasResult()) {
        hash = (37 * hash) + RESULT_FIELD_NUMBER;
        hash = (53 * hash) + getResult().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ConversionResponse describes a conversion response.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse)
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.class, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getConvertedObjectsFieldBuilder();
          getResultFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        uid_ = "";
        if (convertedObjectsBuilder_ == null) {
          convertedObjects_ = java.util.Collections.emptyList();
        } else {
          convertedObjects_ = null;
          convertedObjectsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        result_ = null;
        if (resultBuilder_ != null) {
          resultBuilder_.dispose();
          resultBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse result = new io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse result) {
        if (convertedObjectsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            convertedObjects_ = java.util.Collections.unmodifiableList(convertedObjects_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.convertedObjects_ = convertedObjects_;
        } else {
          result.convertedObjects_ = convertedObjectsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uid_ = uid_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.result_ = resultBuilder_ == null
              ? result_
              : resultBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.getDefaultInstance()) return this;
        if (other.hasUid()) {
          uid_ = other.uid_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (convertedObjectsBuilder_ == null) {
          if (!other.convertedObjects_.isEmpty()) {
            if (convertedObjects_.isEmpty()) {
              convertedObjects_ = other.convertedObjects_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureConvertedObjectsIsMutable();
              convertedObjects_.addAll(other.convertedObjects_);
            }
            onChanged();
          }
        } else {
          if (!other.convertedObjects_.isEmpty()) {
            if (convertedObjectsBuilder_.isEmpty()) {
              convertedObjectsBuilder_.dispose();
              convertedObjectsBuilder_ = null;
              convertedObjects_ = other.convertedObjects_;
              bitField0_ = (bitField0_ & ~0x00000002);
              convertedObjectsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConvertedObjectsFieldBuilder() : null;
            } else {
              convertedObjectsBuilder_.addAllMessages(other.convertedObjects_);
            }
          }
        }
        if (other.hasResult()) {
          mergeResult(other.getResult());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                uid_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                io.kubernetes.client.proto.Runtime.RawExtension m =
                    input.readMessage(
                        io.kubernetes.client.proto.Runtime.RawExtension.parser(),
                        extensionRegistry);
                if (convertedObjectsBuilder_ == null) {
                  ensureConvertedObjectsIsMutable();
                  convertedObjects_.add(m);
                } else {
                  convertedObjectsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getResultFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object uid_ = "";
      /**
       * <pre>
       * uid is an identifier for the individual request/response.
       * This should be copied over from the corresponding `request.uid`.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return Whether the uid field is set.
       */
      public boolean hasUid() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response.
       * This should be copied over from the corresponding `request.uid`.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return The uid.
       */
      public java.lang.String getUid() {
        java.lang.Object ref = uid_;
        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()) {
            uid_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response.
       * This should be copied over from the corresponding `request.uid`.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return The bytes for uid.
       */
      public com.google.protobuf.ByteString
          getUidBytes() {
        java.lang.Object ref = uid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response.
       * This should be copied over from the corresponding `request.uid`.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @param value The uid to set.
       * @return This builder for chaining.
       */
      public Builder setUid(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        uid_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response.
       * This should be copied over from the corresponding `request.uid`.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUid() {
        uid_ = getDefaultInstance().getUid();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * uid is an identifier for the individual request/response.
       * This should be copied over from the corresponding `request.uid`.
       * </pre>
       *
       * <code>optional string uid = 1;</code>
       * @param value The bytes for uid to set.
       * @return This builder for chaining.
       */
      public Builder setUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        uid_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> convertedObjects_ =
        java.util.Collections.emptyList();
      private void ensureConvertedObjectsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          convertedObjects_ = new java.util.ArrayList<io.kubernetes.client.proto.Runtime.RawExtension>(convertedObjects_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> convertedObjectsBuilder_;

      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension> getConvertedObjectsList() {
        if (convertedObjectsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(convertedObjects_);
        } else {
          return convertedObjectsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public int getConvertedObjectsCount() {
        if (convertedObjectsBuilder_ == null) {
          return convertedObjects_.size();
        } else {
          return convertedObjectsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension getConvertedObjects(int index) {
        if (convertedObjectsBuilder_ == null) {
          return convertedObjects_.get(index);
        } else {
          return convertedObjectsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder setConvertedObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (convertedObjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConvertedObjectsIsMutable();
          convertedObjects_.set(index, value);
          onChanged();
        } else {
          convertedObjectsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder setConvertedObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (convertedObjectsBuilder_ == null) {
          ensureConvertedObjectsIsMutable();
          convertedObjects_.set(index, builderForValue.build());
          onChanged();
        } else {
          convertedObjectsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder addConvertedObjects(io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (convertedObjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConvertedObjectsIsMutable();
          convertedObjects_.add(value);
          onChanged();
        } else {
          convertedObjectsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder addConvertedObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension value) {
        if (convertedObjectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConvertedObjectsIsMutable();
          convertedObjects_.add(index, value);
          onChanged();
        } else {
          convertedObjectsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder addConvertedObjects(
          io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (convertedObjectsBuilder_ == null) {
          ensureConvertedObjectsIsMutable();
          convertedObjects_.add(builderForValue.build());
          onChanged();
        } else {
          convertedObjectsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder addConvertedObjects(
          int index, io.kubernetes.client.proto.Runtime.RawExtension.Builder builderForValue) {
        if (convertedObjectsBuilder_ == null) {
          ensureConvertedObjectsIsMutable();
          convertedObjects_.add(index, builderForValue.build());
          onChanged();
        } else {
          convertedObjectsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder addAllConvertedObjects(
          java.lang.Iterable<? extends io.kubernetes.client.proto.Runtime.RawExtension> values) {
        if (convertedObjectsBuilder_ == null) {
          ensureConvertedObjectsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, convertedObjects_);
          onChanged();
        } else {
          convertedObjectsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder clearConvertedObjects() {
        if (convertedObjectsBuilder_ == null) {
          convertedObjects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          convertedObjectsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public Builder removeConvertedObjects(int index) {
        if (convertedObjectsBuilder_ == null) {
          ensureConvertedObjectsIsMutable();
          convertedObjects_.remove(index);
          onChanged();
        } else {
          convertedObjectsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder getConvertedObjectsBuilder(
          int index) {
        return getConvertedObjectsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder getConvertedObjectsOrBuilder(
          int index) {
        if (convertedObjectsBuilder_ == null) {
          return convertedObjects_.get(index);  } else {
          return convertedObjectsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
           getConvertedObjectsOrBuilderList() {
        if (convertedObjectsBuilder_ != null) {
          return convertedObjectsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(convertedObjects_);
        }
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder addConvertedObjectsBuilder() {
        return getConvertedObjectsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance());
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public io.kubernetes.client.proto.Runtime.RawExtension.Builder addConvertedObjectsBuilder(
          int index) {
        return getConvertedObjectsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.Runtime.RawExtension.getDefaultInstance());
      }
      /**
       * <pre>
       * convertedObjects is the list of converted version of `request.objects` if the `result` is successful, otherwise empty.
       * The webhook is expected to set `apiVersion` of these objects to the `request.desiredAPIVersion`. The list
       * must also have the same size as the input list with the same objects in the same order (equal kind, metadata.uid, metadata.name and metadata.namespace).
       * The webhook is allowed to mutate labels and annotations. Any other change to the metadata is silently ignored.
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apimachinery.pkg.runtime.RawExtension convertedObjects = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.Runtime.RawExtension.Builder> 
           getConvertedObjectsBuilderList() {
        return getConvertedObjectsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder> 
          getConvertedObjectsFieldBuilder() {
        if (convertedObjectsBuilder_ == null) {
          convertedObjectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.Runtime.RawExtension, io.kubernetes.client.proto.Runtime.RawExtension.Builder, io.kubernetes.client.proto.Runtime.RawExtensionOrBuilder>(
                  convertedObjects_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          convertedObjects_ = null;
        }
        return convertedObjectsBuilder_;
      }

      private io.kubernetes.client.proto.Meta.Status result_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Status, io.kubernetes.client.proto.Meta.Status.Builder, io.kubernetes.client.proto.Meta.StatusOrBuilder> resultBuilder_;
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       * @return Whether the result field is set.
       */
      public boolean hasResult() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       * @return The result.
       */
      public io.kubernetes.client.proto.Meta.Status getResult() {
        if (resultBuilder_ == null) {
          return result_ == null ? io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : result_;
        } else {
          return resultBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       */
      public Builder setResult(io.kubernetes.client.proto.Meta.Status value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          result_ = value;
        } else {
          resultBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       */
      public Builder setResult(
          io.kubernetes.client.proto.Meta.Status.Builder builderForValue) {
        if (resultBuilder_ == null) {
          result_ = builderForValue.build();
        } else {
          resultBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       */
      public Builder mergeResult(io.kubernetes.client.proto.Meta.Status value) {
        if (resultBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            result_ != null &&
            result_ != io.kubernetes.client.proto.Meta.Status.getDefaultInstance()) {
            getResultBuilder().mergeFrom(value);
          } else {
            result_ = value;
          }
        } else {
          resultBuilder_.mergeFrom(value);
        }
        if (result_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       */
      public Builder clearResult() {
        bitField0_ = (bitField0_ & ~0x00000004);
        result_ = null;
        if (resultBuilder_ != null) {
          resultBuilder_.dispose();
          resultBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.Status.Builder getResultBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getResultFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.StatusOrBuilder getResultOrBuilder() {
        if (resultBuilder_ != null) {
          return resultBuilder_.getMessageOrBuilder();
        } else {
          return result_ == null ?
              io.kubernetes.client.proto.Meta.Status.getDefaultInstance() : result_;
        }
      }
      /**
       * <pre>
       * result contains the result of conversion with extra details if the conversion failed. `result.status` determines if
       * the conversion failed or succeeded. The `result.status` field is required and represents the success or failure of the
       * conversion. A successful conversion must set `result.status` to `Success`. A failed conversion must set
       * `result.status` to `Failure` and provide more details in `result.message` and return http status 200. The `result.message`
       * will be used to construct an error message for the end user.
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Status result = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Status, io.kubernetes.client.proto.Meta.Status.Builder, io.kubernetes.client.proto.Meta.StatusOrBuilder> 
          getResultFieldBuilder() {
        if (resultBuilder_ == null) {
          resultBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Status, io.kubernetes.client.proto.Meta.Status.Builder, io.kubernetes.client.proto.Meta.StatusOrBuilder>(
                  getResult(),
                  getParentForChildren(),
                  isClean());
          result_ = null;
        }
        return resultBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConversionReviewOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionReview)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * request describes the attributes for the conversion request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
     * @return Whether the request field is set.
     */
    boolean hasRequest();
    /**
     * <pre>
     * request describes the attributes for the conversion request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
     * @return The request.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest getRequest();
    /**
     * <pre>
     * request describes the attributes for the conversion request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequestOrBuilder getRequestOrBuilder();

    /**
     * <pre>
     * response describes the attributes for the conversion response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
     * @return Whether the response field is set.
     */
    boolean hasResponse();
    /**
     * <pre>
     * response describes the attributes for the conversion response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
     * @return The response.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse getResponse();
    /**
     * <pre>
     * response describes the attributes for the conversion response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponseOrBuilder getResponseOrBuilder();
  }
  /**
   * <pre>
   * ConversionReview describes a conversion request/response.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionReview}
   */
  public static final class ConversionReview extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionReview)
      ConversionReviewOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        ConversionReview.class.getName());
    }
    // Use ConversionReview.newBuilder() to construct.
    private ConversionReview(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ConversionReview() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview.class, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview.Builder.class);
    }

    private int bitField0_;
    public static final int REQUEST_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest request_;
    /**
     * <pre>
     * request describes the attributes for the conversion request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
     * @return Whether the request field is set.
     */
    @java.lang.Override
    public boolean hasRequest() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * request describes the attributes for the conversion request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
     * @return The request.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest getRequest() {
      return request_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.getDefaultInstance() : request_;
    }
    /**
     * <pre>
     * request describes the attributes for the conversion request.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequestOrBuilder getRequestOrBuilder() {
      return request_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.getDefaultInstance() : request_;
    }

    public static final int RESPONSE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse response_;
    /**
     * <pre>
     * response describes the attributes for the conversion response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
     * @return Whether the response field is set.
     */
    @java.lang.Override
    public boolean hasResponse() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * response describes the attributes for the conversion response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
     * @return The response.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse getResponse() {
      return response_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.getDefaultInstance() : response_;
    }
    /**
     * <pre>
     * response describes the attributes for the conversion response.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponseOrBuilder getResponseOrBuilder() {
      return response_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.getDefaultInstance() : response_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getRequest());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getResponse());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRequest());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getResponse());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasRequest() != other.hasRequest()) return false;
      if (hasRequest()) {
        if (!getRequest()
            .equals(other.getRequest())) return false;
      }
      if (hasResponse() != other.hasResponse()) return false;
      if (hasResponse()) {
        if (!getResponse()
            .equals(other.getResponse())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRequest()) {
        hash = (37 * hash) + REQUEST_FIELD_NUMBER;
        hash = (53 * hash) + getRequest().hashCode();
      }
      if (hasResponse()) {
        hash = (37 * hash) + RESPONSE_FIELD_NUMBER;
        hash = (53 * hash) + getResponse().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ConversionReview describes a conversion request/response.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionReview}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionReview)
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReviewOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview.class, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getRequestFieldBuilder();
          getResponseFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        request_ = null;
        if (requestBuilder_ != null) {
          requestBuilder_.dispose();
          requestBuilder_ = null;
        }
        response_ = null;
        if (responseBuilder_ != null) {
          responseBuilder_.dispose();
          responseBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview result = new io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.request_ = requestBuilder_ == null
              ? request_
              : requestBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.response_ = responseBuilder_ == null
              ? response_
              : responseBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview.getDefaultInstance()) return this;
        if (other.hasRequest()) {
          mergeRequest(other.getRequest());
        }
        if (other.hasResponse()) {
          mergeResponse(other.getResponse());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest request_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequestOrBuilder> requestBuilder_;
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       * @return Whether the request field is set.
       */
      public boolean hasRequest() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       * @return The request.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest getRequest() {
        if (requestBuilder_ == null) {
          return request_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.getDefaultInstance() : request_;
        } else {
          return requestBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       */
      public Builder setRequest(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest value) {
        if (requestBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          request_ = value;
        } else {
          requestBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       */
      public Builder setRequest(
          io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.Builder builderForValue) {
        if (requestBuilder_ == null) {
          request_ = builderForValue.build();
        } else {
          requestBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       */
      public Builder mergeRequest(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest value) {
        if (requestBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            request_ != null &&
            request_ != io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.getDefaultInstance()) {
            getRequestBuilder().mergeFrom(value);
          } else {
            request_ = value;
          }
        } else {
          requestBuilder_.mergeFrom(value);
        }
        if (request_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       */
      public Builder clearRequest() {
        bitField0_ = (bitField0_ & ~0x00000001);
        request_ = null;
        if (requestBuilder_ != null) {
          requestBuilder_.dispose();
          requestBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.Builder getRequestBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRequestFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequestOrBuilder getRequestOrBuilder() {
        if (requestBuilder_ != null) {
          return requestBuilder_.getMessageOrBuilder();
        } else {
          return request_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.getDefaultInstance() : request_;
        }
      }
      /**
       * <pre>
       * request describes the attributes for the conversion request.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionRequest request = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequestOrBuilder> 
          getRequestFieldBuilder() {
        if (requestBuilder_ == null) {
          requestBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequest.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionRequestOrBuilder>(
                  getRequest(),
                  getParentForChildren(),
                  isClean());
          request_ = null;
        }
        return requestBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse response_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponseOrBuilder> responseBuilder_;
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       * @return Whether the response field is set.
       */
      public boolean hasResponse() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       * @return The response.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse getResponse() {
        if (responseBuilder_ == null) {
          return response_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.getDefaultInstance() : response_;
        } else {
          return responseBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       */
      public Builder setResponse(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse value) {
        if (responseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          response_ = value;
        } else {
          responseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       */
      public Builder setResponse(
          io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.Builder builderForValue) {
        if (responseBuilder_ == null) {
          response_ = builderForValue.build();
        } else {
          responseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       */
      public Builder mergeResponse(io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse value) {
        if (responseBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            response_ != null &&
            response_ != io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.getDefaultInstance()) {
            getResponseBuilder().mergeFrom(value);
          } else {
            response_ = value;
          }
        } else {
          responseBuilder_.mergeFrom(value);
        }
        if (response_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       */
      public Builder clearResponse() {
        bitField0_ = (bitField0_ & ~0x00000002);
        response_ = null;
        if (responseBuilder_ != null) {
          responseBuilder_.dispose();
          responseBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.Builder getResponseBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getResponseFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponseOrBuilder getResponseOrBuilder() {
        if (responseBuilder_ != null) {
          return responseBuilder_.getMessageOrBuilder();
        } else {
          return response_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.getDefaultInstance() : response_;
        }
      }
      /**
       * <pre>
       * response describes the attributes for the conversion response.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionResponse response = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponseOrBuilder> 
          getResponseFieldBuilder() {
        if (responseBuilder_ == null) {
          responseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponse.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ConversionResponseOrBuilder>(
                  getResponse(),
                  getParentForChildren(),
                  isClean());
          response_ = null;
        }
        return responseBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionReview)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ConversionReview)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ConversionReview getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceColumnDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * name is a human readable name for the column.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * name is a human readable name for the column.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * name is a human readable name for the column.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * type is an OpenAPI type definition for this column.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * type is an OpenAPI type definition for this column.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * type is an OpenAPI type definition for this column.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * format is an optional OpenAPI type definition for this column. The 'name' format is applied
     * to the primary identifier column to assist in clients identifying column is the resource name.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * +optional
     * </pre>
     *
     * <code>optional string format = 3;</code>
     * @return Whether the format field is set.
     */
    boolean hasFormat();
    /**
     * <pre>
     * format is an optional OpenAPI type definition for this column. The 'name' format is applied
     * to the primary identifier column to assist in clients identifying column is the resource name.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * +optional
     * </pre>
     *
     * <code>optional string format = 3;</code>
     * @return The format.
     */
    java.lang.String getFormat();
    /**
     * <pre>
     * format is an optional OpenAPI type definition for this column. The 'name' format is applied
     * to the primary identifier column to assist in clients identifying column is the resource name.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * +optional
     * </pre>
     *
     * <code>optional string format = 3;</code>
     * @return The bytes for format.
     */
    com.google.protobuf.ByteString
        getFormatBytes();

    /**
     * <pre>
     * description is a human readable description of this column.
     * +optional
     * </pre>
     *
     * <code>optional string description = 4;</code>
     * @return Whether the description field is set.
     */
    boolean hasDescription();
    /**
     * <pre>
     * description is a human readable description of this column.
     * +optional
     * </pre>
     *
     * <code>optional string description = 4;</code>
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * <pre>
     * description is a human readable description of this column.
     * +optional
     * </pre>
     *
     * <code>optional string description = 4;</code>
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * <pre>
     * priority is an integer defining the relative importance of this column compared to others. Lower
     * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
     * should be given a priority greater than 0.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 5;</code>
     * @return Whether the priority field is set.
     */
    boolean hasPriority();
    /**
     * <pre>
     * priority is an integer defining the relative importance of this column compared to others. Lower
     * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
     * should be given a priority greater than 0.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 5;</code>
     * @return The priority.
     */
    int getPriority();

    /**
     * <pre>
     * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
     * each custom resource to produce the value for this column.
     * </pre>
     *
     * <code>optional string JSONPath = 6;</code>
     * @return Whether the jSONPath field is set.
     */
    boolean hasJSONPath();
    /**
     * <pre>
     * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
     * each custom resource to produce the value for this column.
     * </pre>
     *
     * <code>optional string JSONPath = 6;</code>
     * @return The jSONPath.
     */
    java.lang.String getJSONPath();
    /**
     * <pre>
     * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
     * each custom resource to produce the value for this column.
     * </pre>
     *
     * <code>optional string JSONPath = 6;</code>
     * @return The bytes for jSONPath.
     */
    com.google.protobuf.ByteString
        getJSONPathBytes();
  }
  /**
   * <pre>
   * CustomResourceColumnDefinition specifies a column for server side printing.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition}
   */
  public static final class CustomResourceColumnDefinition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition)
      CustomResourceColumnDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceColumnDefinition.class.getName());
    }
    // Use CustomResourceColumnDefinition.newBuilder() to construct.
    private CustomResourceColumnDefinition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceColumnDefinition() {
      name_ = "";
      type_ = "";
      format_ = "";
      description_ = "";
      jSONPath_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * name is a human readable name for the column.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * name is a human readable name for the column.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    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 a human readable name for the column.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    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 TYPE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * type is an OpenAPI type definition for this column.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * type is an OpenAPI type definition for this column.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * type is an OpenAPI type definition for this column.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * </pre>
     *
     * <code>optional string type = 2;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FORMAT_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object format_ = "";
    /**
     * <pre>
     * format is an optional OpenAPI type definition for this column. The 'name' format is applied
     * to the primary identifier column to assist in clients identifying column is the resource name.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * +optional
     * </pre>
     *
     * <code>optional string format = 3;</code>
     * @return Whether the format field is set.
     */
    @java.lang.Override
    public boolean hasFormat() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * format is an optional OpenAPI type definition for this column. The 'name' format is applied
     * to the primary identifier column to assist in clients identifying column is the resource name.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * +optional
     * </pre>
     *
     * <code>optional string format = 3;</code>
     * @return The format.
     */
    @java.lang.Override
    public java.lang.String getFormat() {
      java.lang.Object ref = format_;
      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()) {
          format_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * format is an optional OpenAPI type definition for this column. The 'name' format is applied
     * to the primary identifier column to assist in clients identifying column is the resource name.
     * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
     * +optional
     * </pre>
     *
     * <code>optional string format = 3;</code>
     * @return The bytes for format.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFormatBytes() {
      java.lang.Object ref = format_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        format_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * <pre>
     * description is a human readable description of this column.
     * +optional
     * </pre>
     *
     * <code>optional string description = 4;</code>
     * @return Whether the description field is set.
     */
    @java.lang.Override
    public boolean hasDescription() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * description is a human readable description of this column.
     * +optional
     * </pre>
     *
     * <code>optional string description = 4;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          description_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * description is a human readable description of this column.
     * +optional
     * </pre>
     *
     * <code>optional string description = 4;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PRIORITY_FIELD_NUMBER = 5;
    private int priority_ = 0;
    /**
     * <pre>
     * priority is an integer defining the relative importance of this column compared to others. Lower
     * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
     * should be given a priority greater than 0.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 5;</code>
     * @return Whether the priority field is set.
     */
    @java.lang.Override
    public boolean hasPriority() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * priority is an integer defining the relative importance of this column compared to others. Lower
     * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
     * should be given a priority greater than 0.
     * +optional
     * </pre>
     *
     * <code>optional int32 priority = 5;</code>
     * @return The priority.
     */
    @java.lang.Override
    public int getPriority() {
      return priority_;
    }

    public static final int JSONPATH_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object jSONPath_ = "";
    /**
     * <pre>
     * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
     * each custom resource to produce the value for this column.
     * </pre>
     *
     * <code>optional string JSONPath = 6;</code>
     * @return Whether the jSONPath field is set.
     */
    @java.lang.Override
    public boolean hasJSONPath() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
     * each custom resource to produce the value for this column.
     * </pre>
     *
     * <code>optional string JSONPath = 6;</code>
     * @return The jSONPath.
     */
    @java.lang.Override
    public java.lang.String getJSONPath() {
      java.lang.Object ref = jSONPath_;
      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()) {
          jSONPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
     * each custom resource to produce the value for this column.
     * </pre>
     *
     * <code>optional string JSONPath = 6;</code>
     * @return The bytes for jSONPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getJSONPathBytes() {
      java.lang.Object ref = jSONPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jSONPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, type_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, format_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, description_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, priority_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, jSONPath_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, type_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, format_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, description_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, priority_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, jSONPath_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasFormat() != other.hasFormat()) return false;
      if (hasFormat()) {
        if (!getFormat()
            .equals(other.getFormat())) return false;
      }
      if (hasDescription() != other.hasDescription()) return false;
      if (hasDescription()) {
        if (!getDescription()
            .equals(other.getDescription())) return false;
      }
      if (hasPriority() != other.hasPriority()) return false;
      if (hasPriority()) {
        if (getPriority()
            != other.getPriority()) return false;
      }
      if (hasJSONPath() != other.hasJSONPath()) return false;
      if (hasJSONPath()) {
        if (!getJSONPath()
            .equals(other.getJSONPath())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasFormat()) {
        hash = (37 * hash) + FORMAT_FIELD_NUMBER;
        hash = (53 * hash) + getFormat().hashCode();
      }
      if (hasDescription()) {
        hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
        hash = (53 * hash) + getDescription().hashCode();
      }
      if (hasPriority()) {
        hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
        hash = (53 * hash) + getPriority();
      }
      if (hasJSONPath()) {
        hash = (37 * hash) + JSONPATH_FIELD_NUMBER;
        hash = (53 * hash) + getJSONPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceColumnDefinition specifies a column for server side printing.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        type_ = "";
        format_ = "";
        description_ = "";
        priority_ = 0;
        jSONPath_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.format_ = format_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.description_ = description_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.priority_ = priority_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.jSONPath_ = jSONPath_;
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasFormat()) {
          format_ = other.format_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasDescription()) {
          description_ = other.description_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasPriority()) {
          setPriority(other.getPriority());
        }
        if (other.hasJSONPath()) {
          jSONPath_ = other.jSONPath_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                format_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                description_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                priority_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 50: {
                jSONPath_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * name is a human readable name for the column.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * name is a human readable name for the column.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return The name.
       */
      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 a human readable name for the column.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return The bytes for name.
       */
      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 a human readable name for the column.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name is a human readable name for the column.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name is a human readable name for the column.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * type is an OpenAPI type definition for this column.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * </pre>
       *
       * <code>optional string type = 2;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * type is an OpenAPI type definition for this column.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * </pre>
       *
       * <code>optional string type = 2;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * type is an OpenAPI type definition for this column.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * </pre>
       *
       * <code>optional string type = 2;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * type is an OpenAPI type definition for this column.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * </pre>
       *
       * <code>optional string type = 2;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type is an OpenAPI type definition for this column.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * </pre>
       *
       * <code>optional string type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type is an OpenAPI type definition for this column.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * </pre>
       *
       * <code>optional string type = 2;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object format_ = "";
      /**
       * <pre>
       * format is an optional OpenAPI type definition for this column. The 'name' format is applied
       * to the primary identifier column to assist in clients identifying column is the resource name.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * +optional
       * </pre>
       *
       * <code>optional string format = 3;</code>
       * @return Whether the format field is set.
       */
      public boolean hasFormat() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * format is an optional OpenAPI type definition for this column. The 'name' format is applied
       * to the primary identifier column to assist in clients identifying column is the resource name.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * +optional
       * </pre>
       *
       * <code>optional string format = 3;</code>
       * @return The format.
       */
      public java.lang.String getFormat() {
        java.lang.Object ref = format_;
        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()) {
            format_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * format is an optional OpenAPI type definition for this column. The 'name' format is applied
       * to the primary identifier column to assist in clients identifying column is the resource name.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * +optional
       * </pre>
       *
       * <code>optional string format = 3;</code>
       * @return The bytes for format.
       */
      public com.google.protobuf.ByteString
          getFormatBytes() {
        java.lang.Object ref = format_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          format_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * format is an optional OpenAPI type definition for this column. The 'name' format is applied
       * to the primary identifier column to assist in clients identifying column is the resource name.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * +optional
       * </pre>
       *
       * <code>optional string format = 3;</code>
       * @param value The format to set.
       * @return This builder for chaining.
       */
      public Builder setFormat(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        format_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * format is an optional OpenAPI type definition for this column. The 'name' format is applied
       * to the primary identifier column to assist in clients identifying column is the resource name.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * +optional
       * </pre>
       *
       * <code>optional string format = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFormat() {
        format_ = getDefaultInstance().getFormat();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * format is an optional OpenAPI type definition for this column. The 'name' format is applied
       * to the primary identifier column to assist in clients identifying column is the resource name.
       * See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
       * +optional
       * </pre>
       *
       * <code>optional string format = 3;</code>
       * @param value The bytes for format to set.
       * @return This builder for chaining.
       */
      public Builder setFormatBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        format_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * <pre>
       * description is a human readable description of this column.
       * +optional
       * </pre>
       *
       * <code>optional string description = 4;</code>
       * @return Whether the description field is set.
       */
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * description is a human readable description of this column.
       * +optional
       * </pre>
       *
       * <code>optional string description = 4;</code>
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            description_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * description is a human readable description of this column.
       * +optional
       * </pre>
       *
       * <code>optional string description = 4;</code>
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * description is a human readable description of this column.
       * +optional
       * </pre>
       *
       * <code>optional string description = 4;</code>
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * description is a human readable description of this column.
       * +optional
       * </pre>
       *
       * <code>optional string description = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * description is a human readable description of this column.
       * +optional
       * </pre>
       *
       * <code>optional string description = 4;</code>
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private int priority_ ;
      /**
       * <pre>
       * priority is an integer defining the relative importance of this column compared to others. Lower
       * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
       * should be given a priority greater than 0.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 5;</code>
       * @return Whether the priority field is set.
       */
      @java.lang.Override
      public boolean hasPriority() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * priority is an integer defining the relative importance of this column compared to others. Lower
       * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
       * should be given a priority greater than 0.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 5;</code>
       * @return The priority.
       */
      @java.lang.Override
      public int getPriority() {
        return priority_;
      }
      /**
       * <pre>
       * priority is an integer defining the relative importance of this column compared to others. Lower
       * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
       * should be given a priority greater than 0.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 5;</code>
       * @param value The priority to set.
       * @return This builder for chaining.
       */
      public Builder setPriority(int value) {

        priority_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * priority is an integer defining the relative importance of this column compared to others. Lower
       * numbers are considered higher priority. Columns that may be omitted in limited space scenarios
       * should be given a priority greater than 0.
       * +optional
       * </pre>
       *
       * <code>optional int32 priority = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearPriority() {
        bitField0_ = (bitField0_ & ~0x00000010);
        priority_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object jSONPath_ = "";
      /**
       * <pre>
       * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
       * each custom resource to produce the value for this column.
       * </pre>
       *
       * <code>optional string JSONPath = 6;</code>
       * @return Whether the jSONPath field is set.
       */
      public boolean hasJSONPath() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
       * each custom resource to produce the value for this column.
       * </pre>
       *
       * <code>optional string JSONPath = 6;</code>
       * @return The jSONPath.
       */
      public java.lang.String getJSONPath() {
        java.lang.Object ref = jSONPath_;
        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()) {
            jSONPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
       * each custom resource to produce the value for this column.
       * </pre>
       *
       * <code>optional string JSONPath = 6;</code>
       * @return The bytes for jSONPath.
       */
      public com.google.protobuf.ByteString
          getJSONPathBytes() {
        java.lang.Object ref = jSONPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jSONPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
       * each custom resource to produce the value for this column.
       * </pre>
       *
       * <code>optional string JSONPath = 6;</code>
       * @param value The jSONPath to set.
       * @return This builder for chaining.
       */
      public Builder setJSONPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        jSONPath_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
       * each custom resource to produce the value for this column.
       * </pre>
       *
       * <code>optional string JSONPath = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearJSONPath() {
        jSONPath_ = getDefaultInstance().getJSONPath();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * JSONPath is a simple JSON path (i.e. with array notation) which is evaluated against
       * each custom resource to produce the value for this column.
       * </pre>
       *
       * <code>optional string JSONPath = 6;</code>
       * @param value The bytes for jSONPath to set.
       * @return This builder for chaining.
       */
      public Builder setJSONPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        jSONPath_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceConversionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * strategy specifies how custom resources are converted between versions. Allowed values are:
     * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
     * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
     * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
     * </pre>
     *
     * <code>optional string strategy = 1;</code>
     * @return Whether the strategy field is set.
     */
    boolean hasStrategy();
    /**
     * <pre>
     * strategy specifies how custom resources are converted between versions. Allowed values are:
     * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
     * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
     * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
     * </pre>
     *
     * <code>optional string strategy = 1;</code>
     * @return The strategy.
     */
    java.lang.String getStrategy();
    /**
     * <pre>
     * strategy specifies how custom resources are converted between versions. Allowed values are:
     * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
     * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
     * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
     * </pre>
     *
     * <code>optional string strategy = 1;</code>
     * @return The bytes for strategy.
     */
    com.google.protobuf.ByteString
        getStrategyBytes();

    /**
     * <pre>
     * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
     * Required when `strategy` is set to `Webhook`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
     * @return Whether the webhookClientConfig field is set.
     */
    boolean hasWebhookClientConfig();
    /**
     * <pre>
     * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
     * Required when `strategy` is set to `Webhook`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
     * @return The webhookClientConfig.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig getWebhookClientConfig();
    /**
     * <pre>
     * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
     * Required when `strategy` is set to `Webhook`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfigOrBuilder getWebhookClientConfigOrBuilder();

    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @return A list containing the conversionReviewVersions.
     */
    java.util.List<java.lang.String>
        getConversionReviewVersionsList();
    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @return The count of conversionReviewVersions.
     */
    int getConversionReviewVersionsCount();
    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @param index The index of the element to return.
     * @return The conversionReviewVersions at the given index.
     */
    java.lang.String getConversionReviewVersions(int index);
    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the conversionReviewVersions at the given index.
     */
    com.google.protobuf.ByteString
        getConversionReviewVersionsBytes(int index);
  }
  /**
   * <pre>
   * CustomResourceConversion describes how to convert different versions of a CR.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion}
   */
  public static final class CustomResourceConversion extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion)
      CustomResourceConversionOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceConversion.class.getName());
    }
    // Use CustomResourceConversion.newBuilder() to construct.
    private CustomResourceConversion(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceConversion() {
      strategy_ = "";
      conversionReviewVersions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.Builder.class);
    }

    private int bitField0_;
    public static final int STRATEGY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object strategy_ = "";
    /**
     * <pre>
     * strategy specifies how custom resources are converted between versions. Allowed values are:
     * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
     * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
     * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
     * </pre>
     *
     * <code>optional string strategy = 1;</code>
     * @return Whether the strategy field is set.
     */
    @java.lang.Override
    public boolean hasStrategy() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * strategy specifies how custom resources are converted between versions. Allowed values are:
     * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
     * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
     * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
     * </pre>
     *
     * <code>optional string strategy = 1;</code>
     * @return The strategy.
     */
    @java.lang.Override
    public java.lang.String getStrategy() {
      java.lang.Object ref = strategy_;
      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()) {
          strategy_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * strategy specifies how custom resources are converted between versions. Allowed values are:
     * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
     * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
     * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
     * </pre>
     *
     * <code>optional string strategy = 1;</code>
     * @return The bytes for strategy.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStrategyBytes() {
      java.lang.Object ref = strategy_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        strategy_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WEBHOOKCLIENTCONFIG_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig webhookClientConfig_;
    /**
     * <pre>
     * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
     * Required when `strategy` is set to `Webhook`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
     * @return Whether the webhookClientConfig field is set.
     */
    @java.lang.Override
    public boolean hasWebhookClientConfig() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
     * Required when `strategy` is set to `Webhook`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
     * @return The webhookClientConfig.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig getWebhookClientConfig() {
      return webhookClientConfig_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.getDefaultInstance() : webhookClientConfig_;
    }
    /**
     * <pre>
     * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
     * Required when `strategy` is set to `Webhook`.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfigOrBuilder getWebhookClientConfigOrBuilder() {
      return webhookClientConfig_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.getDefaultInstance() : webhookClientConfig_;
    }

    public static final int CONVERSIONREVIEWVERSIONS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList conversionReviewVersions_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @return A list containing the conversionReviewVersions.
     */
    public com.google.protobuf.ProtocolStringList
        getConversionReviewVersionsList() {
      return conversionReviewVersions_;
    }
    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @return The count of conversionReviewVersions.
     */
    public int getConversionReviewVersionsCount() {
      return conversionReviewVersions_.size();
    }
    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @param index The index of the element to return.
     * @return The conversionReviewVersions at the given index.
     */
    public java.lang.String getConversionReviewVersions(int index) {
      return conversionReviewVersions_.get(index);
    }
    /**
     * <pre>
     * conversionReviewVersions is an ordered list of preferred `ConversionReview`
     * versions the Webhook expects. The API server will use the first version in
     * the list which it supports. If none of the versions specified in this list
     * are supported by API server, conversion will fail for the custom resource.
     * If a persisted Webhook configuration specifies allowed versions and does not
     * include any versions known to the API Server, calls to the webhook will fail.
     * Defaults to `["v1beta1"]`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string conversionReviewVersions = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the conversionReviewVersions at the given index.
     */
    public com.google.protobuf.ByteString
        getConversionReviewVersionsBytes(int index) {
      return conversionReviewVersions_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, strategy_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getWebhookClientConfig());
      }
      for (int i = 0; i < conversionReviewVersions_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, conversionReviewVersions_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, strategy_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getWebhookClientConfig());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < conversionReviewVersions_.size(); i++) {
          dataSize += computeStringSizeNoTag(conversionReviewVersions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getConversionReviewVersionsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasStrategy() != other.hasStrategy()) return false;
      if (hasStrategy()) {
        if (!getStrategy()
            .equals(other.getStrategy())) return false;
      }
      if (hasWebhookClientConfig() != other.hasWebhookClientConfig()) return false;
      if (hasWebhookClientConfig()) {
        if (!getWebhookClientConfig()
            .equals(other.getWebhookClientConfig())) return false;
      }
      if (!getConversionReviewVersionsList()
          .equals(other.getConversionReviewVersionsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStrategy()) {
        hash = (37 * hash) + STRATEGY_FIELD_NUMBER;
        hash = (53 * hash) + getStrategy().hashCode();
      }
      if (hasWebhookClientConfig()) {
        hash = (37 * hash) + WEBHOOKCLIENTCONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getWebhookClientConfig().hashCode();
      }
      if (getConversionReviewVersionsCount() > 0) {
        hash = (37 * hash) + CONVERSIONREVIEWVERSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConversionReviewVersionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceConversion describes how to convert different versions of a CR.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getWebhookClientConfigFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        strategy_ = "";
        webhookClientConfig_ = null;
        if (webhookClientConfigBuilder_ != null) {
          webhookClientConfigBuilder_.dispose();
          webhookClientConfigBuilder_ = null;
        }
        conversionReviewVersions_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.strategy_ = strategy_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.webhookClientConfig_ = webhookClientConfigBuilder_ == null
              ? webhookClientConfig_
              : webhookClientConfigBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          conversionReviewVersions_.makeImmutable();
          result.conversionReviewVersions_ = conversionReviewVersions_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.getDefaultInstance()) return this;
        if (other.hasStrategy()) {
          strategy_ = other.strategy_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasWebhookClientConfig()) {
          mergeWebhookClientConfig(other.getWebhookClientConfig());
        }
        if (!other.conversionReviewVersions_.isEmpty()) {
          if (conversionReviewVersions_.isEmpty()) {
            conversionReviewVersions_ = other.conversionReviewVersions_;
            bitField0_ |= 0x00000004;
          } else {
            ensureConversionReviewVersionsIsMutable();
            conversionReviewVersions_.addAll(other.conversionReviewVersions_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object strategy_ = "";
      /**
       * <pre>
       * strategy specifies how custom resources are converted between versions. Allowed values are:
       * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
       * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
       * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
       * </pre>
       *
       * <code>optional string strategy = 1;</code>
       * @return Whether the strategy field is set.
       */
      public boolean hasStrategy() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * strategy specifies how custom resources are converted between versions. Allowed values are:
       * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
       * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
       * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
       * </pre>
       *
       * <code>optional string strategy = 1;</code>
       * @return The strategy.
       */
      public java.lang.String getStrategy() {
        java.lang.Object ref = strategy_;
        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()) {
            strategy_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * strategy specifies how custom resources are converted between versions. Allowed values are:
       * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
       * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
       * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
       * </pre>
       *
       * <code>optional string strategy = 1;</code>
       * @return The bytes for strategy.
       */
      public com.google.protobuf.ByteString
          getStrategyBytes() {
        java.lang.Object ref = strategy_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          strategy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * strategy specifies how custom resources are converted between versions. Allowed values are:
       * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
       * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
       * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
       * </pre>
       *
       * <code>optional string strategy = 1;</code>
       * @param value The strategy to set.
       * @return This builder for chaining.
       */
      public Builder setStrategy(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        strategy_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * strategy specifies how custom resources are converted between versions. Allowed values are:
       * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
       * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
       * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
       * </pre>
       *
       * <code>optional string strategy = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStrategy() {
        strategy_ = getDefaultInstance().getStrategy();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * strategy specifies how custom resources are converted between versions. Allowed values are:
       * - `None`: The converter only change the apiVersion and would not touch any other field in the custom resource.
       * - `Webhook`: API Server will call to an external webhook to do the conversion. Additional information
       * is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhookClientConfig to be set.
       * </pre>
       *
       * <code>optional string strategy = 1;</code>
       * @param value The bytes for strategy to set.
       * @return This builder for chaining.
       */
      public Builder setStrategyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        strategy_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig webhookClientConfig_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfigOrBuilder> webhookClientConfigBuilder_;
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       * @return Whether the webhookClientConfig field is set.
       */
      public boolean hasWebhookClientConfig() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       * @return The webhookClientConfig.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig getWebhookClientConfig() {
        if (webhookClientConfigBuilder_ == null) {
          return webhookClientConfig_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.getDefaultInstance() : webhookClientConfig_;
        } else {
          return webhookClientConfigBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       */
      public Builder setWebhookClientConfig(io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig value) {
        if (webhookClientConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          webhookClientConfig_ = value;
        } else {
          webhookClientConfigBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       */
      public Builder setWebhookClientConfig(
          io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.Builder builderForValue) {
        if (webhookClientConfigBuilder_ == null) {
          webhookClientConfig_ = builderForValue.build();
        } else {
          webhookClientConfigBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       */
      public Builder mergeWebhookClientConfig(io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig value) {
        if (webhookClientConfigBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            webhookClientConfig_ != null &&
            webhookClientConfig_ != io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.getDefaultInstance()) {
            getWebhookClientConfigBuilder().mergeFrom(value);
          } else {
            webhookClientConfig_ = value;
          }
        } else {
          webhookClientConfigBuilder_.mergeFrom(value);
        }
        if (webhookClientConfig_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       */
      public Builder clearWebhookClientConfig() {
        bitField0_ = (bitField0_ & ~0x00000002);
        webhookClientConfig_ = null;
        if (webhookClientConfigBuilder_ != null) {
          webhookClientConfigBuilder_.dispose();
          webhookClientConfigBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.Builder getWebhookClientConfigBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getWebhookClientConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfigOrBuilder getWebhookClientConfigOrBuilder() {
        if (webhookClientConfigBuilder_ != null) {
          return webhookClientConfigBuilder_.getMessageOrBuilder();
        } else {
          return webhookClientConfig_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.getDefaultInstance() : webhookClientConfig_;
        }
      }
      /**
       * <pre>
       * webhookClientConfig is the instructions for how to call the webhook if strategy is `Webhook`.
       * Required when `strategy` is set to `Webhook`.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig webhookClientConfig = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfigOrBuilder> 
          getWebhookClientConfigFieldBuilder() {
        if (webhookClientConfigBuilder_ == null) {
          webhookClientConfigBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfigOrBuilder>(
                  getWebhookClientConfig(),
                  getParentForChildren(),
                  isClean());
          webhookClientConfig_ = null;
        }
        return webhookClientConfigBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList conversionReviewVersions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureConversionReviewVersionsIsMutable() {
        if (!conversionReviewVersions_.isModifiable()) {
          conversionReviewVersions_ = new com.google.protobuf.LazyStringArrayList(conversionReviewVersions_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @return A list containing the conversionReviewVersions.
       */
      public com.google.protobuf.ProtocolStringList
          getConversionReviewVersionsList() {
        conversionReviewVersions_.makeImmutable();
        return conversionReviewVersions_;
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @return The count of conversionReviewVersions.
       */
      public int getConversionReviewVersionsCount() {
        return conversionReviewVersions_.size();
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @param index The index of the element to return.
       * @return The conversionReviewVersions at the given index.
       */
      public java.lang.String getConversionReviewVersions(int index) {
        return conversionReviewVersions_.get(index);
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the conversionReviewVersions at the given index.
       */
      public com.google.protobuf.ByteString
          getConversionReviewVersionsBytes(int index) {
        return conversionReviewVersions_.getByteString(index);
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @param index The index to set the value at.
       * @param value The conversionReviewVersions to set.
       * @return This builder for chaining.
       */
      public Builder setConversionReviewVersions(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureConversionReviewVersionsIsMutable();
        conversionReviewVersions_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @param value The conversionReviewVersions to add.
       * @return This builder for chaining.
       */
      public Builder addConversionReviewVersions(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureConversionReviewVersionsIsMutable();
        conversionReviewVersions_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @param values The conversionReviewVersions to add.
       * @return This builder for chaining.
       */
      public Builder addAllConversionReviewVersions(
          java.lang.Iterable<java.lang.String> values) {
        ensureConversionReviewVersionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, conversionReviewVersions_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearConversionReviewVersions() {
        conversionReviewVersions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * conversionReviewVersions is an ordered list of preferred `ConversionReview`
       * versions the Webhook expects. The API server will use the first version in
       * the list which it supports. If none of the versions specified in this list
       * are supported by API server, conversion will fail for the custom resource.
       * If a persisted Webhook configuration specifies allowed versions and does not
       * include any versions known to the API Server, calls to the webhook will fail.
       * Defaults to `["v1beta1"]`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string conversionReviewVersions = 3;</code>
       * @param value The bytes of the conversionReviewVersions to add.
       * @return This builder for chaining.
       */
      public Builder addConversionReviewVersionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureConversionReviewVersionsIsMutable();
        conversionReviewVersions_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceDefinitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     * @return Whether the metadata field is set.
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     * @return The metadata.
     */
    io.kubernetes.client.proto.Meta.ObjectMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder();

    /**
     * <pre>
     * spec describes how the user wants the resources to appear
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    boolean hasSpec();
    /**
     * <pre>
     * spec describes how the user wants the resources to appear
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
     * @return The spec.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec getSpec();
    /**
     * <pre>
     * spec describes how the user wants the resources to appear
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpecOrBuilder getSpecOrBuilder();

    /**
     * <pre>
     * status indicates the actual state of the CustomResourceDefinition
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * status indicates the actual state of the CustomResourceDefinition
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus getStatus();
    /**
     * <pre>
     * status indicates the actual state of the CustomResourceDefinition
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatusOrBuilder getStatusOrBuilder();
  }
  /**
   * <pre>
   * CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format
   * &lt;.spec.name&gt;.&lt;.spec.group&gt;.
   * Deprecated in v1.16, planned for removal in v1.22. Use apiextensions.k8s.io/v1 CustomResourceDefinition instead.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition}
   */
  public static final class CustomResourceDefinition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition)
      CustomResourceDefinitionOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceDefinition.class.getName());
    }
    // Use CustomResourceDefinition.newBuilder() to construct.
    private CustomResourceDefinition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceDefinition() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.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
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     * @return Whether the metadata field is set.
     */
    @java.lang.Override
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     * @return The metadata.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.ObjectMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.ObjectMetaOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance() : metadata_;
    }

    public static final int SPEC_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec spec_;
    /**
     * <pre>
     * spec describes how the user wants the resources to appear
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
     * @return Whether the spec field is set.
     */
    @java.lang.Override
    public boolean hasSpec() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * spec describes how the user wants the resources to appear
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
     * @return The spec.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec getSpec() {
      return spec_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.getDefaultInstance() : spec_;
    }
    /**
     * <pre>
     * spec describes how the user wants the resources to appear
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpecOrBuilder getSpecOrBuilder() {
      return spec_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.getDefaultInstance() : spec_;
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus status_;
    /**
     * <pre>
     * status indicates the actual state of the CustomResourceDefinition
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * status indicates the actual state of the CustomResourceDefinition
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * status indicates the actual state of the CustomResourceDefinition
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.getDefaultInstance() : status_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getMetadata());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getSpec());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getStatus());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSpec());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getStatus());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (hasSpec() != other.hasSpec()) return false;
      if (hasSpec()) {
        if (!getSpec()
            .equals(other.getSpec())) return false;
      }
      if (hasStatus() != other.hasStatus()) return false;
      if (hasStatus()) {
        if (!getStatus()
            .equals(other.getStatus())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      if (hasSpec()) {
        hash = (37 * hash) + SPEC_FIELD_NUMBER;
        hash = (53 * hash) + getSpec().hashCode();
      }
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceDefinition represents a resource that should be exposed on the API server.  Its name MUST be in the format
     * &lt;.spec.name&gt;.&lt;.spec.group&gt;.
     * Deprecated in v1.16, planned for removal in v1.22. Use apiextensions.k8s.io/v1 CustomResourceDefinition instead.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
          getSpecFieldBuilder();
          getStatusFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.metadata_ = metadataBuilder_ == null
              ? metadata_
              : metadataBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.spec_ = specBuilder_ == null
              ? spec_
              : specBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.status_ = statusBuilder_ == null
              ? status_
              : statusBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        if (other.hasSpec()) {
          mergeSpec(other.getSpec());
        }
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private io.kubernetes.client.proto.Meta.ObjectMeta metadata_;
      private com.google.protobuf.SingleFieldBuilder<
          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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       * @return Whether the metadata field is set.
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       * @return The metadata.
       */
      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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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;
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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) != 0) &&
            metadata_ != null &&
            metadata_ != io.kubernetes.client.proto.Meta.ObjectMeta.getDefaultInstance()) {
            getMetadataBuilder().mergeFrom(value);
          } else {
            metadata_ = value;
          }
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        if (metadata_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        bitField0_ = (bitField0_ & ~0x00000001);
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          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.SingleFieldBuilder<
              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 io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec spec_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpecOrBuilder> specBuilder_;
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       * @return Whether the spec field is set.
       */
      public boolean hasSpec() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       * @return The spec.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec getSpec() {
        if (specBuilder_ == null) {
          return spec_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.getDefaultInstance() : spec_;
        } else {
          return specBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       */
      public Builder setSpec(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec value) {
        if (specBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spec_ = value;
        } else {
          specBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       */
      public Builder setSpec(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.Builder builderForValue) {
        if (specBuilder_ == null) {
          spec_ = builderForValue.build();
        } else {
          specBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       */
      public Builder mergeSpec(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec value) {
        if (specBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            spec_ != null &&
            spec_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.getDefaultInstance()) {
            getSpecBuilder().mergeFrom(value);
          } else {
            spec_ = value;
          }
        } else {
          specBuilder_.mergeFrom(value);
        }
        if (spec_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       */
      public Builder clearSpec() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spec_ = null;
        if (specBuilder_ != null) {
          specBuilder_.dispose();
          specBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.Builder getSpecBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSpecFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpecOrBuilder getSpecOrBuilder() {
        if (specBuilder_ != null) {
          return specBuilder_.getMessageOrBuilder();
        } else {
          return spec_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.getDefaultInstance() : spec_;
        }
      }
      /**
       * <pre>
       * spec describes how the user wants the resources to appear
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec spec = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpecOrBuilder> 
          getSpecFieldBuilder() {
        if (specBuilder_ == null) {
          specBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpecOrBuilder>(
                  getSpec(),
                  getParentForChildren(),
                  isClean());
          spec_ = null;
        }
        return specBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000004);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * status indicates the actual state of the CustomResourceDefinition
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus status = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceDefinitionConditionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * status is the status of the condition.
     * Can be True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * status is the status of the condition.
     * Can be True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * <pre>
     * status is the status of the condition.
     * Can be True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * <pre>
     * lastTransitionTime last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    boolean hasLastTransitionTime();
    /**
     * <pre>
     * lastTransitionTime last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
     * @return The lastTransitionTime.
     */
    io.kubernetes.client.proto.Meta.Time getLastTransitionTime();
    /**
     * <pre>
     * lastTransitionTime last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
     */
    io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTransitionTimeOrBuilder();

    /**
     * <pre>
     * reason is a unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * reason is a unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * reason is a unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * message is a human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * message is a human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * message is a human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();
  }
  /**
   * <pre>
   * CustomResourceDefinitionCondition contains details for the current condition of this pod.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition}
   */
  public static final class CustomResourceDefinitionCondition extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition)
      CustomResourceDefinitionConditionOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceDefinitionCondition.class.getName());
    }
    // Use CustomResourceDefinitionCondition.newBuilder() to construct.
    private CustomResourceDefinitionCondition(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceDefinitionCondition() {
      type_ = "";
      status_ = "";
      reason_ = "";
      message_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
     * </pre>
     *
     * <code>optional string type = 1;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object status_ = "";
    /**
     * <pre>
     * status is the status of the condition.
     * Can be True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * status is the status of the condition.
     * Can be True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The status.
     */
    @java.lang.Override
    public java.lang.String getStatus() {
      java.lang.Object ref = status_;
      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()) {
          status_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * status is the status of the condition.
     * Can be True, False, Unknown.
     * </pre>
     *
     * <code>optional string status = 2;</code>
     * @return The bytes for status.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStatusBytes() {
      java.lang.Object ref = status_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        status_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LASTTRANSITIONTIME_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.Meta.Time lastTransitionTime_;
    /**
     * <pre>
     * lastTransitionTime last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
     * @return Whether the lastTransitionTime field is set.
     */
    @java.lang.Override
    public boolean hasLastTransitionTime() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * lastTransitionTime last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
     * @return The lastTransitionTime.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.Time getLastTransitionTime() {
      return lastTransitionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTransitionTime_;
    }
    /**
     * <pre>
     * lastTransitionTime last time the condition transitioned from one status to another.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTransitionTimeOrBuilder() {
      return lastTransitionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTransitionTime_;
    }

    public static final int REASON_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * reason is a unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * reason is a unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The reason.
     */
    @java.lang.Override
    public java.lang.String getReason() {
      java.lang.Object ref = reason_;
      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()) {
          reason_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * reason is a unique, one-word, CamelCase reason for the condition's last transition.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The bytes for reason.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReasonBytes() {
      java.lang.Object ref = reason_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        reason_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * message is a human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * message is a human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          message_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * message is a human-readable message indicating details about last transition.
     * +optional
     * </pre>
     *
     * <code>optional string message = 5;</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, type_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, status_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, message_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, type_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, status_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLastTransitionTime());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, message_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasStatus() != other.hasStatus()) return false;
      if (hasStatus()) {
        if (!getStatus()
            .equals(other.getStatus())) return false;
      }
      if (hasLastTransitionTime() != other.hasLastTransitionTime()) return false;
      if (hasLastTransitionTime()) {
        if (!getLastTransitionTime()
            .equals(other.getLastTransitionTime())) return false;
      }
      if (hasReason() != other.hasReason()) return false;
      if (hasReason()) {
        if (!getReason()
            .equals(other.getReason())) return false;
      }
      if (hasMessage() != other.hasMessage()) return false;
      if (hasMessage()) {
        if (!getMessage()
            .equals(other.getMessage())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      if (hasLastTransitionTime()) {
        hash = (37 * hash) + LASTTRANSITIONTIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastTransitionTime().hashCode();
      }
      if (hasReason()) {
        hash = (37 * hash) + REASON_FIELD_NUMBER;
        hash = (53 * hash) + getReason().hashCode();
      }
      if (hasMessage()) {
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessage().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceDefinitionCondition contains details for the current condition of this pod.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getLastTransitionTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = "";
        status_ = "";
        lastTransitionTime_ = null;
        if (lastTransitionTimeBuilder_ != null) {
          lastTransitionTimeBuilder_.dispose();
          lastTransitionTimeBuilder_ = null;
        }
        reason_ = "";
        message_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.status_ = status_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.lastTransitionTime_ = lastTransitionTimeBuilder_ == null
              ? lastTransitionTime_
              : lastTransitionTimeBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.message_ = message_;
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.getDefaultInstance()) return this;
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasStatus()) {
          status_ = other.status_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLastTransitionTime()) {
          mergeLastTransitionTime(other.getLastTransitionTime());
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * type is the type of the condition. Types include Established, NamesAccepted and Terminating.
       * </pre>
       *
       * <code>optional string type = 1;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object status_ = "";
      /**
       * <pre>
       * status is the status of the condition.
       * Can be True, False, Unknown.
       * </pre>
       *
       * <code>optional string status = 2;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * status is the status of the condition.
       * Can be True, False, Unknown.
       * </pre>
       *
       * <code>optional string status = 2;</code>
       * @return The status.
       */
      public java.lang.String getStatus() {
        java.lang.Object ref = status_;
        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()) {
            status_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * status is the status of the condition.
       * Can be True, False, Unknown.
       * </pre>
       *
       * <code>optional string status = 2;</code>
       * @return The bytes for status.
       */
      public com.google.protobuf.ByteString
          getStatusBytes() {
        java.lang.Object ref = status_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          status_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * status is the status of the condition.
       * Can be True, False, Unknown.
       * </pre>
       *
       * <code>optional string status = 2;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        status_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status is the status of the condition.
       * Can be True, False, Unknown.
       * </pre>
       *
       * <code>optional string status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        status_ = getDefaultInstance().getStatus();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status is the status of the condition.
       * Can be True, False, Unknown.
       * </pre>
       *
       * <code>optional string status = 2;</code>
       * @param value The bytes for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        status_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.Meta.Time lastTransitionTime_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> lastTransitionTimeBuilder_;
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       * @return Whether the lastTransitionTime field is set.
       */
      public boolean hasLastTransitionTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       * @return The lastTransitionTime.
       */
      public io.kubernetes.client.proto.Meta.Time getLastTransitionTime() {
        if (lastTransitionTimeBuilder_ == null) {
          return lastTransitionTime_ == null ? io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTransitionTime_;
        } else {
          return lastTransitionTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       */
      public Builder setLastTransitionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastTransitionTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastTransitionTime_ = value;
        } else {
          lastTransitionTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       */
      public Builder setLastTransitionTime(
          io.kubernetes.client.proto.Meta.Time.Builder builderForValue) {
        if (lastTransitionTimeBuilder_ == null) {
          lastTransitionTime_ = builderForValue.build();
        } else {
          lastTransitionTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       */
      public Builder mergeLastTransitionTime(io.kubernetes.client.proto.Meta.Time value) {
        if (lastTransitionTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            lastTransitionTime_ != null &&
            lastTransitionTime_ != io.kubernetes.client.proto.Meta.Time.getDefaultInstance()) {
            getLastTransitionTimeBuilder().mergeFrom(value);
          } else {
            lastTransitionTime_ = value;
          }
        } else {
          lastTransitionTimeBuilder_.mergeFrom(value);
        }
        if (lastTransitionTime_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       */
      public Builder clearLastTransitionTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastTransitionTime_ = null;
        if (lastTransitionTimeBuilder_ != null) {
          lastTransitionTimeBuilder_.dispose();
          lastTransitionTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.Time.Builder getLastTransitionTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getLastTransitionTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       */
      public io.kubernetes.client.proto.Meta.TimeOrBuilder getLastTransitionTimeOrBuilder() {
        if (lastTransitionTimeBuilder_ != null) {
          return lastTransitionTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastTransitionTime_ == null ?
              io.kubernetes.client.proto.Meta.Time.getDefaultInstance() : lastTransitionTime_;
        }
      }
      /**
       * <pre>
       * lastTransitionTime last time the condition transitioned from one status to another.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder> 
          getLastTransitionTimeFieldBuilder() {
        if (lastTransitionTimeBuilder_ == null) {
          lastTransitionTimeBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.Meta.Time, io.kubernetes.client.proto.Meta.Time.Builder, io.kubernetes.client.proto.Meta.TimeOrBuilder>(
                  getLastTransitionTime(),
                  getParentForChildren(),
                  isClean());
          lastTransitionTime_ = null;
        }
        return lastTransitionTimeBuilder_;
      }

      private java.lang.Object reason_ = "";
      /**
       * <pre>
       * reason is a unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * reason is a unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return The reason.
       */
      public java.lang.String getReason() {
        java.lang.Object ref = reason_;
        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()) {
            reason_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * reason is a unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return The bytes for reason.
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        java.lang.Object ref = reason_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * reason is a unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @param value The reason to set.
       * @return This builder for chaining.
       */
      public Builder setReason(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        reason_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason is a unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason is a unique, one-word, CamelCase reason for the condition's last transition.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @param value The bytes for reason to set.
       * @return This builder for chaining.
       */
      public Builder setReasonBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        reason_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * message is a human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 5;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * message is a human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 5;</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            message_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * message is a human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 5;</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * message is a human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 5;</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * message is a human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * message is a human-readable message indicating details about last transition.
       * +optional
       * </pre>
       *
       * <code>optional string message = 5;</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceDefinitionListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     * @return Whether the metadata field is set.
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     * @return The metadata.
     */
    io.kubernetes.client.proto.Meta.ListMeta getMetadata();
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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 list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition> 
        getItemsList();
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition getItems(int index);
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    int getItemsCount();
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder> 
        getItemsOrBuilderList();
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder getItemsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList}
   */
  public static final class CustomResourceDefinitionList extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList)
      CustomResourceDefinitionListOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceDefinitionList.class.getName());
    }
    // Use CustomResourceDefinitionList.newBuilder() to construct.
    private CustomResourceDefinitionList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceDefinitionList() {
      items_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList.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
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     * @return Whether the metadata field is set.
     */
    @java.lang.Override
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     * @return The metadata.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.Meta.ListMeta getMetadata() {
      return metadata_ == null ? io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Standard object's metadata
     * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
     */
    @java.lang.Override
    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;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition> items_;
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition> getItemsList() {
      return items_;
    }
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder> 
        getItemsOrBuilderList() {
      return items_;
    }
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    @java.lang.Override
    public int getItemsCount() {
      return items_.size();
    }
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition getItems(int index) {
      return items_.get(index);
    }
    /**
     * <pre>
     * items list individual CustomResourceDefinition objects
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder getItemsOrBuilder(
        int index) {
      return items_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        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 += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (!getItemsList()
          .equals(other.getItemsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (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) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceDefinitionList is a list of CustomResourceDefinition objects.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList.Builder.class);
      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList result) {
        if (itemsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            items_ = java.util.Collections.unmodifiableList(items_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.items_ = items_;
        } else {
          result.items_ = itemsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.metadata_ = metadataBuilder_ == null
              ? metadata_
              : metadataBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList.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.GeneratedMessage.alwaysUseFieldBuilders ?
                   getItemsFieldBuilder() : null;
            } else {
              itemsBuilder_.addAllMessages(other.items_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private io.kubernetes.client.proto.Meta.ListMeta metadata_;
      private com.google.protobuf.SingleFieldBuilder<
          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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       * @return Whether the metadata field is set.
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       * @return The metadata.
       */
      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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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;
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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) != 0) &&
            metadata_ != null &&
            metadata_ != io.kubernetes.client.proto.Meta.ListMeta.getDefaultInstance()) {
            getMetadataBuilder().mergeFrom(value);
          } else {
            metadata_ = value;
          }
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        if (metadata_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      public Builder clearMetadata() {
        bitField0_ = (bitField0_ & ~0x00000001);
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Standard object's metadata
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#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
       * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          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.SingleFieldBuilder<
              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.V1beta1Apiextensions.CustomResourceDefinition> items_ =
        java.util.Collections.emptyList();
      private void ensureItemsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          items_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition>(items_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder> itemsBuilder_;

      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition> getItemsList() {
        if (itemsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(items_);
        } else {
          return itemsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public int getItemsCount() {
        if (itemsBuilder_ == null) {
          return items_.size();
        } else {
          return itemsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition getItems(int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);
        } else {
          return itemsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition 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 list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder setItems(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder addItems(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemsIsMutable();
          items_.add(value);
          onChanged();
        } else {
          itemsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition 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 list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder addItems(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder addItems(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder addAllItems(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition> values) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, items_);
          onChanged();
        } else {
          itemsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition 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 list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public Builder removeItems(int index) {
        if (itemsBuilder_ == null) {
          ensureItemsIsMutable();
          items_.remove(index);
          onChanged();
        } else {
          itemsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder getItemsBuilder(
          int index) {
        return getItemsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder getItemsOrBuilder(
          int index) {
        if (itemsBuilder_ == null) {
          return items_.get(index);  } else {
          return itemsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder> 
           getItemsOrBuilderList() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(items_);
        }
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder addItemsBuilder() {
        return getItemsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder addItemsBuilder(
          int index) {
        return getItemsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * items list individual CustomResourceDefinition objects
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinition items = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder> 
           getItemsBuilderList() {
        return getItemsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionOrBuilder>(
                  items_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionList)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceDefinitionNamesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * plural is the plural name of the resource to serve.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * Must be all lowercase.
     * </pre>
     *
     * <code>optional string plural = 1;</code>
     * @return Whether the plural field is set.
     */
    boolean hasPlural();
    /**
     * <pre>
     * plural is the plural name of the resource to serve.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * Must be all lowercase.
     * </pre>
     *
     * <code>optional string plural = 1;</code>
     * @return The plural.
     */
    java.lang.String getPlural();
    /**
     * <pre>
     * plural is the plural name of the resource to serve.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * Must be all lowercase.
     * </pre>
     *
     * <code>optional string plural = 1;</code>
     * @return The bytes for plural.
     */
    com.google.protobuf.ByteString
        getPluralBytes();

    /**
     * <pre>
     * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
     * +optional
     * </pre>
     *
     * <code>optional string singular = 2;</code>
     * @return Whether the singular field is set.
     */
    boolean hasSingular();
    /**
     * <pre>
     * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
     * +optional
     * </pre>
     *
     * <code>optional string singular = 2;</code>
     * @return The singular.
     */
    java.lang.String getSingular();
    /**
     * <pre>
     * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
     * +optional
     * </pre>
     *
     * <code>optional string singular = 2;</code>
     * @return The bytes for singular.
     */
    com.google.protobuf.ByteString
        getSingularBytes();

    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @return A list containing the shortNames.
     */
    java.util.List<java.lang.String>
        getShortNamesList();
    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @return The count of shortNames.
     */
    int getShortNamesCount();
    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @param index The index of the element to return.
     * @return The shortNames at the given index.
     */
    java.lang.String getShortNames(int index);
    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the shortNames at the given index.
     */
    com.google.protobuf.ByteString
        getShortNamesBytes(int index);

    /**
     * <pre>
     * kind is the serialized kind of the resource. It is normally CamelCase and singular.
     * Custom resource instances will use this value as the `kind` attribute in API calls.
     * </pre>
     *
     * <code>optional string kind = 4;</code>
     * @return Whether the kind field is set.
     */
    boolean hasKind();
    /**
     * <pre>
     * kind is the serialized kind of the resource. It is normally CamelCase and singular.
     * Custom resource instances will use this value as the `kind` attribute in API calls.
     * </pre>
     *
     * <code>optional string kind = 4;</code>
     * @return The kind.
     */
    java.lang.String getKind();
    /**
     * <pre>
     * kind is the serialized kind of the resource. It is normally CamelCase and singular.
     * Custom resource instances will use this value as the `kind` attribute in API calls.
     * </pre>
     *
     * <code>optional string kind = 4;</code>
     * @return The bytes for kind.
     */
    com.google.protobuf.ByteString
        getKindBytes();

    /**
     * <pre>
     * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
     * +optional
     * </pre>
     *
     * <code>optional string listKind = 5;</code>
     * @return Whether the listKind field is set.
     */
    boolean hasListKind();
    /**
     * <pre>
     * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
     * +optional
     * </pre>
     *
     * <code>optional string listKind = 5;</code>
     * @return The listKind.
     */
    java.lang.String getListKind();
    /**
     * <pre>
     * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
     * +optional
     * </pre>
     *
     * <code>optional string listKind = 5;</code>
     * @return The bytes for listKind.
     */
    com.google.protobuf.ByteString
        getListKindBytes();

    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @return A list containing the categories.
     */
    java.util.List<java.lang.String>
        getCategoriesList();
    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @return The count of categories.
     */
    int getCategoriesCount();
    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @param index The index of the element to return.
     * @return The categories at the given index.
     */
    java.lang.String getCategories(int index);
    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the categories at the given index.
     */
    com.google.protobuf.ByteString
        getCategoriesBytes(int index);
  }
  /**
   * <pre>
   * CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames}
   */
  public static final class CustomResourceDefinitionNames extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames)
      CustomResourceDefinitionNamesOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceDefinitionNames.class.getName());
    }
    // Use CustomResourceDefinitionNames.newBuilder() to construct.
    private CustomResourceDefinitionNames(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceDefinitionNames() {
      plural_ = "";
      singular_ = "";
      shortNames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      kind_ = "";
      listKind_ = "";
      categories_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder.class);
    }

    private int bitField0_;
    public static final int PLURAL_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object plural_ = "";
    /**
     * <pre>
     * plural is the plural name of the resource to serve.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * Must be all lowercase.
     * </pre>
     *
     * <code>optional string plural = 1;</code>
     * @return Whether the plural field is set.
     */
    @java.lang.Override
    public boolean hasPlural() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * plural is the plural name of the resource to serve.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * Must be all lowercase.
     * </pre>
     *
     * <code>optional string plural = 1;</code>
     * @return The plural.
     */
    @java.lang.Override
    public java.lang.String getPlural() {
      java.lang.Object ref = plural_;
      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()) {
          plural_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * plural is the plural name of the resource to serve.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * Must be all lowercase.
     * </pre>
     *
     * <code>optional string plural = 1;</code>
     * @return The bytes for plural.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPluralBytes() {
      java.lang.Object ref = plural_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        plural_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SINGULAR_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object singular_ = "";
    /**
     * <pre>
     * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
     * +optional
     * </pre>
     *
     * <code>optional string singular = 2;</code>
     * @return Whether the singular field is set.
     */
    @java.lang.Override
    public boolean hasSingular() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
     * +optional
     * </pre>
     *
     * <code>optional string singular = 2;</code>
     * @return The singular.
     */
    @java.lang.Override
    public java.lang.String getSingular() {
      java.lang.Object ref = singular_;
      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()) {
          singular_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
     * +optional
     * </pre>
     *
     * <code>optional string singular = 2;</code>
     * @return The bytes for singular.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSingularBytes() {
      java.lang.Object ref = singular_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        singular_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SHORTNAMES_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList shortNames_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @return A list containing the shortNames.
     */
    public com.google.protobuf.ProtocolStringList
        getShortNamesList() {
      return shortNames_;
    }
    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @return The count of shortNames.
     */
    public int getShortNamesCount() {
      return shortNames_.size();
    }
    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @param index The index of the element to return.
     * @return The shortNames at the given index.
     */
    public java.lang.String getShortNames(int index) {
      return shortNames_.get(index);
    }
    /**
     * <pre>
     * shortNames are short names for the resource, exposed in API discovery documents,
     * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
     * It must be all lowercase.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string shortNames = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the shortNames at the given index.
     */
    public com.google.protobuf.ByteString
        getShortNamesBytes(int index) {
      return shortNames_.getByteString(index);
    }

    public static final int KIND_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object kind_ = "";
    /**
     * <pre>
     * kind is the serialized kind of the resource. It is normally CamelCase and singular.
     * Custom resource instances will use this value as the `kind` attribute in API calls.
     * </pre>
     *
     * <code>optional string kind = 4;</code>
     * @return Whether the kind field is set.
     */
    @java.lang.Override
    public boolean hasKind() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * kind is the serialized kind of the resource. It is normally CamelCase and singular.
     * Custom resource instances will use this value as the `kind` attribute in API calls.
     * </pre>
     *
     * <code>optional string kind = 4;</code>
     * @return The kind.
     */
    @java.lang.Override
    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 serialized kind of the resource. It is normally CamelCase and singular.
     * Custom resource instances will use this value as the `kind` attribute in API calls.
     * </pre>
     *
     * <code>optional string kind = 4;</code>
     * @return The bytes for kind.
     */
    @java.lang.Override
    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 LISTKIND_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object listKind_ = "";
    /**
     * <pre>
     * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
     * +optional
     * </pre>
     *
     * <code>optional string listKind = 5;</code>
     * @return Whether the listKind field is set.
     */
    @java.lang.Override
    public boolean hasListKind() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
     * +optional
     * </pre>
     *
     * <code>optional string listKind = 5;</code>
     * @return The listKind.
     */
    @java.lang.Override
    public java.lang.String getListKind() {
      java.lang.Object ref = listKind_;
      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()) {
          listKind_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
     * +optional
     * </pre>
     *
     * <code>optional string listKind = 5;</code>
     * @return The bytes for listKind.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getListKindBytes() {
      java.lang.Object ref = listKind_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        listKind_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CATEGORIES_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList categories_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @return A list containing the categories.
     */
    public com.google.protobuf.ProtocolStringList
        getCategoriesList() {
      return categories_;
    }
    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @return The count of categories.
     */
    public int getCategoriesCount() {
      return categories_.size();
    }
    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @param index The index of the element to return.
     * @return The categories at the given index.
     */
    public java.lang.String getCategories(int index) {
      return categories_.get(index);
    }
    /**
     * <pre>
     * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
     * This is published in API discovery documents, and used by clients to support invocations like
     * `kubectl get all`.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string categories = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the categories at the given index.
     */
    public com.google.protobuf.ByteString
        getCategoriesBytes(int index) {
      return categories_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, plural_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, singular_);
      }
      for (int i = 0; i < shortNames_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, shortNames_.getRaw(i));
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, kind_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, listKind_);
      }
      for (int i = 0; i < categories_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, categories_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, plural_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, singular_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < shortNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(shortNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getShortNamesList().size();
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, kind_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, listKind_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < categories_.size(); i++) {
          dataSize += computeStringSizeNoTag(categories_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCategoriesList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasPlural() != other.hasPlural()) return false;
      if (hasPlural()) {
        if (!getPlural()
            .equals(other.getPlural())) return false;
      }
      if (hasSingular() != other.hasSingular()) return false;
      if (hasSingular()) {
        if (!getSingular()
            .equals(other.getSingular())) return false;
      }
      if (!getShortNamesList()
          .equals(other.getShortNamesList())) return false;
      if (hasKind() != other.hasKind()) return false;
      if (hasKind()) {
        if (!getKind()
            .equals(other.getKind())) return false;
      }
      if (hasListKind() != other.hasListKind()) return false;
      if (hasListKind()) {
        if (!getListKind()
            .equals(other.getListKind())) return false;
      }
      if (!getCategoriesList()
          .equals(other.getCategoriesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPlural()) {
        hash = (37 * hash) + PLURAL_FIELD_NUMBER;
        hash = (53 * hash) + getPlural().hashCode();
      }
      if (hasSingular()) {
        hash = (37 * hash) + SINGULAR_FIELD_NUMBER;
        hash = (53 * hash) + getSingular().hashCode();
      }
      if (getShortNamesCount() > 0) {
        hash = (37 * hash) + SHORTNAMES_FIELD_NUMBER;
        hash = (53 * hash) + getShortNamesList().hashCode();
      }
      if (hasKind()) {
        hash = (37 * hash) + KIND_FIELD_NUMBER;
        hash = (53 * hash) + getKind().hashCode();
      }
      if (hasListKind()) {
        hash = (37 * hash) + LISTKIND_FIELD_NUMBER;
        hash = (53 * hash) + getListKind().hashCode();
      }
      if (getCategoriesCount() > 0) {
        hash = (37 * hash) + CATEGORIES_FIELD_NUMBER;
        hash = (53 * hash) + getCategoriesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceDefinitionNames indicates the names to serve this CustomResourceDefinition
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        plural_ = "";
        singular_ = "";
        shortNames_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        kind_ = "";
        listKind_ = "";
        categories_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.plural_ = plural_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.singular_ = singular_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          shortNames_.makeImmutable();
          result.shortNames_ = shortNames_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.kind_ = kind_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.listKind_ = listKind_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          categories_.makeImmutable();
          result.categories_ = categories_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance()) return this;
        if (other.hasPlural()) {
          plural_ = other.plural_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSingular()) {
          singular_ = other.singular_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.shortNames_.isEmpty()) {
          if (shortNames_.isEmpty()) {
            shortNames_ = other.shortNames_;
            bitField0_ |= 0x00000004;
          } else {
            ensureShortNamesIsMutable();
            shortNames_.addAll(other.shortNames_);
          }
          onChanged();
        }
        if (other.hasKind()) {
          kind_ = other.kind_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasListKind()) {
          listKind_ = other.listKind_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.categories_.isEmpty()) {
          if (categories_.isEmpty()) {
            categories_ = other.categories_;
            bitField0_ |= 0x00000020;
          } else {
            ensureCategoriesIsMutable();
            categories_.addAll(other.categories_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                plural_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                singular_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureShortNamesIsMutable();
                shortNames_.add(bs);
                break;
              } // case 26
              case 34: {
                kind_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                listKind_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureCategoriesIsMutable();
                categories_.add(bs);
                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object plural_ = "";
      /**
       * <pre>
       * plural is the plural name of the resource to serve.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * Must be all lowercase.
       * </pre>
       *
       * <code>optional string plural = 1;</code>
       * @return Whether the plural field is set.
       */
      public boolean hasPlural() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * plural is the plural name of the resource to serve.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * Must be all lowercase.
       * </pre>
       *
       * <code>optional string plural = 1;</code>
       * @return The plural.
       */
      public java.lang.String getPlural() {
        java.lang.Object ref = plural_;
        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()) {
            plural_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * plural is the plural name of the resource to serve.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * Must be all lowercase.
       * </pre>
       *
       * <code>optional string plural = 1;</code>
       * @return The bytes for plural.
       */
      public com.google.protobuf.ByteString
          getPluralBytes() {
        java.lang.Object ref = plural_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          plural_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * plural is the plural name of the resource to serve.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * Must be all lowercase.
       * </pre>
       *
       * <code>optional string plural = 1;</code>
       * @param value The plural to set.
       * @return This builder for chaining.
       */
      public Builder setPlural(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        plural_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * plural is the plural name of the resource to serve.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * Must be all lowercase.
       * </pre>
       *
       * <code>optional string plural = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlural() {
        plural_ = getDefaultInstance().getPlural();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * plural is the plural name of the resource to serve.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/.../&lt;plural&gt;`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * Must be all lowercase.
       * </pre>
       *
       * <code>optional string plural = 1;</code>
       * @param value The bytes for plural to set.
       * @return This builder for chaining.
       */
      public Builder setPluralBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        plural_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object singular_ = "";
      /**
       * <pre>
       * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
       * +optional
       * </pre>
       *
       * <code>optional string singular = 2;</code>
       * @return Whether the singular field is set.
       */
      public boolean hasSingular() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
       * +optional
       * </pre>
       *
       * <code>optional string singular = 2;</code>
       * @return The singular.
       */
      public java.lang.String getSingular() {
        java.lang.Object ref = singular_;
        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()) {
            singular_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
       * +optional
       * </pre>
       *
       * <code>optional string singular = 2;</code>
       * @return The bytes for singular.
       */
      public com.google.protobuf.ByteString
          getSingularBytes() {
        java.lang.Object ref = singular_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          singular_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
       * +optional
       * </pre>
       *
       * <code>optional string singular = 2;</code>
       * @param value The singular to set.
       * @return This builder for chaining.
       */
      public Builder setSingular(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        singular_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
       * +optional
       * </pre>
       *
       * <code>optional string singular = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSingular() {
        singular_ = getDefaultInstance().getSingular();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
       * +optional
       * </pre>
       *
       * <code>optional string singular = 2;</code>
       * @param value The bytes for singular to set.
       * @return This builder for chaining.
       */
      public Builder setSingularBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        singular_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList shortNames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureShortNamesIsMutable() {
        if (!shortNames_.isModifiable()) {
          shortNames_ = new com.google.protobuf.LazyStringArrayList(shortNames_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @return A list containing the shortNames.
       */
      public com.google.protobuf.ProtocolStringList
          getShortNamesList() {
        shortNames_.makeImmutable();
        return shortNames_;
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @return The count of shortNames.
       */
      public int getShortNamesCount() {
        return shortNames_.size();
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @param index The index of the element to return.
       * @return The shortNames at the given index.
       */
      public java.lang.String getShortNames(int index) {
        return shortNames_.get(index);
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the shortNames at the given index.
       */
      public com.google.protobuf.ByteString
          getShortNamesBytes(int index) {
        return shortNames_.getByteString(index);
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @param index The index to set the value at.
       * @param value The shortNames to set.
       * @return This builder for chaining.
       */
      public Builder setShortNames(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureShortNamesIsMutable();
        shortNames_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @param value The shortNames to add.
       * @return This builder for chaining.
       */
      public Builder addShortNames(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureShortNamesIsMutable();
        shortNames_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @param values The shortNames to add.
       * @return This builder for chaining.
       */
      public Builder addAllShortNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureShortNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, shortNames_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearShortNames() {
        shortNames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * shortNames are short names for the resource, exposed in API discovery documents,
       * and used by clients to support invocations like `kubectl get &lt;shortname&gt;`.
       * It must be all lowercase.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string shortNames = 3;</code>
       * @param value The bytes of the shortNames to add.
       * @return This builder for chaining.
       */
      public Builder addShortNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureShortNamesIsMutable();
        shortNames_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object kind_ = "";
      /**
       * <pre>
       * kind is the serialized kind of the resource. It is normally CamelCase and singular.
       * Custom resource instances will use this value as the `kind` attribute in API calls.
       * </pre>
       *
       * <code>optional string kind = 4;</code>
       * @return Whether the kind field is set.
       */
      public boolean hasKind() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * kind is the serialized kind of the resource. It is normally CamelCase and singular.
       * Custom resource instances will use this value as the `kind` attribute in API calls.
       * </pre>
       *
       * <code>optional string kind = 4;</code>
       * @return The kind.
       */
      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 serialized kind of the resource. It is normally CamelCase and singular.
       * Custom resource instances will use this value as the `kind` attribute in API calls.
       * </pre>
       *
       * <code>optional string kind = 4;</code>
       * @return The bytes for kind.
       */
      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 serialized kind of the resource. It is normally CamelCase and singular.
       * Custom resource instances will use this value as the `kind` attribute in API calls.
       * </pre>
       *
       * <code>optional string kind = 4;</code>
       * @param value The kind to set.
       * @return This builder for chaining.
       */
      public Builder setKind(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        kind_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kind is the serialized kind of the resource. It is normally CamelCase and singular.
       * Custom resource instances will use this value as the `kind` attribute in API calls.
       * </pre>
       *
       * <code>optional string kind = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearKind() {
        kind_ = getDefaultInstance().getKind();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * kind is the serialized kind of the resource. It is normally CamelCase and singular.
       * Custom resource instances will use this value as the `kind` attribute in API calls.
       * </pre>
       *
       * <code>optional string kind = 4;</code>
       * @param value The bytes for kind to set.
       * @return This builder for chaining.
       */
      public Builder setKindBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        kind_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object listKind_ = "";
      /**
       * <pre>
       * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
       * +optional
       * </pre>
       *
       * <code>optional string listKind = 5;</code>
       * @return Whether the listKind field is set.
       */
      public boolean hasListKind() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
       * +optional
       * </pre>
       *
       * <code>optional string listKind = 5;</code>
       * @return The listKind.
       */
      public java.lang.String getListKind() {
        java.lang.Object ref = listKind_;
        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()) {
            listKind_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
       * +optional
       * </pre>
       *
       * <code>optional string listKind = 5;</code>
       * @return The bytes for listKind.
       */
      public com.google.protobuf.ByteString
          getListKindBytes() {
        java.lang.Object ref = listKind_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          listKind_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
       * +optional
       * </pre>
       *
       * <code>optional string listKind = 5;</code>
       * @param value The listKind to set.
       * @return This builder for chaining.
       */
      public Builder setListKind(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        listKind_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
       * +optional
       * </pre>
       *
       * <code>optional string listKind = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearListKind() {
        listKind_ = getDefaultInstance().getListKind();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
       * +optional
       * </pre>
       *
       * <code>optional string listKind = 5;</code>
       * @param value The bytes for listKind to set.
       * @return This builder for chaining.
       */
      public Builder setListKindBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        listKind_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList categories_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureCategoriesIsMutable() {
        if (!categories_.isModifiable()) {
          categories_ = new com.google.protobuf.LazyStringArrayList(categories_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @return A list containing the categories.
       */
      public com.google.protobuf.ProtocolStringList
          getCategoriesList() {
        categories_.makeImmutable();
        return categories_;
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @return The count of categories.
       */
      public int getCategoriesCount() {
        return categories_.size();
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @param index The index of the element to return.
       * @return The categories at the given index.
       */
      public java.lang.String getCategories(int index) {
        return categories_.get(index);
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the categories at the given index.
       */
      public com.google.protobuf.ByteString
          getCategoriesBytes(int index) {
        return categories_.getByteString(index);
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @param index The index to set the value at.
       * @param value The categories to set.
       * @return This builder for chaining.
       */
      public Builder setCategories(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCategoriesIsMutable();
        categories_.set(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @param value The categories to add.
       * @return This builder for chaining.
       */
      public Builder addCategories(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCategoriesIsMutable();
        categories_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @param values The categories to add.
       * @return This builder for chaining.
       */
      public Builder addAllCategories(
          java.lang.Iterable<java.lang.String> values) {
        ensureCategoriesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, categories_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCategories() {
        categories_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
       * This is published in API discovery documents, and used by clients to support invocations like
       * `kubectl get all`.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string categories = 6;</code>
       * @param value The bytes of the categories to add.
       * @return This builder for chaining.
       */
      public Builder addCategoriesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCategoriesIsMutable();
        categories_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceDefinitionSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * group is the API group of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/...`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * </pre>
     *
     * <code>optional string group = 1;</code>
     * @return Whether the group field is set.
     */
    boolean hasGroup();
    /**
     * <pre>
     * group is the API group of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/...`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * </pre>
     *
     * <code>optional string group = 1;</code>
     * @return The group.
     */
    java.lang.String getGroup();
    /**
     * <pre>
     * group is the API group of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/...`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * </pre>
     *
     * <code>optional string group = 1;</code>
     * @return The bytes for group.
     */
    com.google.protobuf.ByteString
        getGroupBytes();

    /**
     * <pre>
     * version is the API version of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
     * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
     * Optional if `versions` is specified.
     * Deprecated: use `versions` instead.
     * +optional
     * </pre>
     *
     * <code>optional string version = 2;</code>
     * @return Whether the version field is set.
     */
    boolean hasVersion();
    /**
     * <pre>
     * version is the API version of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
     * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
     * Optional if `versions` is specified.
     * Deprecated: use `versions` instead.
     * +optional
     * </pre>
     *
     * <code>optional string version = 2;</code>
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     * <pre>
     * version is the API version of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
     * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
     * Optional if `versions` is specified.
     * Deprecated: use `versions` instead.
     * +optional
     * </pre>
     *
     * <code>optional string version = 2;</code>
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <pre>
     * names specify the resource and kind names for the custom resource.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
     * @return Whether the names field is set.
     */
    boolean hasNames();
    /**
     * <pre>
     * names specify the resource and kind names for the custom resource.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
     * @return The names.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getNames();
    /**
     * <pre>
     * names specify the resource and kind names for the custom resource.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder getNamesOrBuilder();

    /**
     * <pre>
     * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
     * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
     * </pre>
     *
     * <code>optional string scope = 4;</code>
     * @return Whether the scope field is set.
     */
    boolean hasScope();
    /**
     * <pre>
     * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
     * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
     * </pre>
     *
     * <code>optional string scope = 4;</code>
     * @return The scope.
     */
    java.lang.String getScope();
    /**
     * <pre>
     * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
     * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
     * </pre>
     *
     * <code>optional string scope = 4;</code>
     * @return The bytes for scope.
     */
    com.google.protobuf.ByteString
        getScopeBytes();

    /**
     * <pre>
     * validation describes the schema used for validation and pruning of the custom resource.
     * If present, this validation schema is used to validate all versions.
     * Top-level and per-version schemas are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
     * @return Whether the validation field is set.
     */
    boolean hasValidation();
    /**
     * <pre>
     * validation describes the schema used for validation and pruning of the custom resource.
     * If present, this validation schema is used to validate all versions.
     * Top-level and per-version schemas are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
     * @return The validation.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getValidation();
    /**
     * <pre>
     * validation describes the schema used for validation and pruning of the custom resource.
     * If present, this validation schema is used to validate all versions.
     * Top-level and per-version schemas are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder getValidationOrBuilder();

    /**
     * <pre>
     * subresources specify what subresources the defined custom resource has.
     * If present, this field configures subresources for all versions.
     * Top-level and per-version subresources are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
     * @return Whether the subresources field is set.
     */
    boolean hasSubresources();
    /**
     * <pre>
     * subresources specify what subresources the defined custom resource has.
     * If present, this field configures subresources for all versions.
     * Top-level and per-version subresources are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
     * @return The subresources.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getSubresources();
    /**
     * <pre>
     * subresources specify what subresources the defined custom resource has.
     * If present, this field configures subresources for all versions.
     * Top-level and per-version subresources are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder getSubresourcesOrBuilder();

    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion> 
        getVersionsList();
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion getVersions(int index);
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    int getVersionsCount();
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder> 
        getVersionsOrBuilderList();
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder getVersionsOrBuilder(
        int index);

    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> 
        getAdditionalPrinterColumnsList();
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getAdditionalPrinterColumns(int index);
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    int getAdditionalPrinterColumnsCount();
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
        getAdditionalPrinterColumnsOrBuilderList();
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder getAdditionalPrinterColumnsOrBuilder(
        int index);

    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> 
        getSelectableFieldsList();
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getSelectableFields(int index);
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    int getSelectableFieldsCount();
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
        getSelectableFieldsOrBuilderList();
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder getSelectableFieldsOrBuilder(
        int index);

    /**
     * <pre>
     * conversion defines conversion settings for the CRD.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
     * @return Whether the conversion field is set.
     */
    boolean hasConversion();
    /**
     * <pre>
     * conversion defines conversion settings for the CRD.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
     * @return The conversion.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion getConversion();
    /**
     * <pre>
     * conversion defines conversion settings for the CRD.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversionOrBuilder getConversionOrBuilder();

    /**
     * <pre>
     * preserveUnknownFields indicates that object fields which are not specified
     * in the OpenAPI schema should be preserved when persisting to storage.
     * apiVersion, kind, metadata and known fields inside metadata are always preserved.
     * If false, schemas must be defined for all versions.
     * Defaults to true in v1beta for backwards compatibility.
     * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
     * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
     * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
     * +optional
     * </pre>
     *
     * <code>optional bool preserveUnknownFields = 10;</code>
     * @return Whether the preserveUnknownFields field is set.
     */
    boolean hasPreserveUnknownFields();
    /**
     * <pre>
     * preserveUnknownFields indicates that object fields which are not specified
     * in the OpenAPI schema should be preserved when persisting to storage.
     * apiVersion, kind, metadata and known fields inside metadata are always preserved.
     * If false, schemas must be defined for all versions.
     * Defaults to true in v1beta for backwards compatibility.
     * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
     * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
     * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
     * +optional
     * </pre>
     *
     * <code>optional bool preserveUnknownFields = 10;</code>
     * @return The preserveUnknownFields.
     */
    boolean getPreserveUnknownFields();
  }
  /**
   * <pre>
   * CustomResourceDefinitionSpec describes how a user wants their resource to appear
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec}
   */
  public static final class CustomResourceDefinitionSpec extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec)
      CustomResourceDefinitionSpecOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceDefinitionSpec.class.getName());
    }
    // Use CustomResourceDefinitionSpec.newBuilder() to construct.
    private CustomResourceDefinitionSpec(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceDefinitionSpec() {
      group_ = "";
      version_ = "";
      scope_ = "";
      versions_ = java.util.Collections.emptyList();
      additionalPrinterColumns_ = java.util.Collections.emptyList();
      selectableFields_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.Builder.class);
    }

    private int bitField0_;
    public static final int GROUP_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object group_ = "";
    /**
     * <pre>
     * group is the API group of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/...`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * </pre>
     *
     * <code>optional string group = 1;</code>
     * @return Whether the group field is set.
     */
    @java.lang.Override
    public boolean hasGroup() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * group is the API group of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/...`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * </pre>
     *
     * <code>optional string group = 1;</code>
     * @return The group.
     */
    @java.lang.Override
    public java.lang.String getGroup() {
      java.lang.Object ref = group_;
      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()) {
          group_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * group is the API group of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/...`.
     * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
     * </pre>
     *
     * <code>optional string group = 1;</code>
     * @return The bytes for group.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupBytes() {
      java.lang.Object ref = group_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        group_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object version_ = "";
    /**
     * <pre>
     * version is the API version of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
     * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
     * Optional if `versions` is specified.
     * Deprecated: use `versions` instead.
     * +optional
     * </pre>
     *
     * <code>optional string version = 2;</code>
     * @return Whether the version field is set.
     */
    @java.lang.Override
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * version is the API version of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
     * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
     * Optional if `versions` is specified.
     * Deprecated: use `versions` instead.
     * +optional
     * </pre>
     *
     * <code>optional string version = 2;</code>
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      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()) {
          version_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * version is the API version of the defined custom resource.
     * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
     * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
     * Optional if `versions` is specified.
     * Deprecated: use `versions` instead.
     * +optional
     * </pre>
     *
     * <code>optional string version = 2;</code>
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAMES_FIELD_NUMBER = 3;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames names_;
    /**
     * <pre>
     * names specify the resource and kind names for the custom resource.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
     * @return Whether the names field is set.
     */
    @java.lang.Override
    public boolean hasNames() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * names specify the resource and kind names for the custom resource.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
     * @return The names.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getNames() {
      return names_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : names_;
    }
    /**
     * <pre>
     * names specify the resource and kind names for the custom resource.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder getNamesOrBuilder() {
      return names_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : names_;
    }

    public static final int SCOPE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object scope_ = "";
    /**
     * <pre>
     * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
     * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
     * </pre>
     *
     * <code>optional string scope = 4;</code>
     * @return Whether the scope field is set.
     */
    @java.lang.Override
    public boolean hasScope() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
     * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
     * </pre>
     *
     * <code>optional string scope = 4;</code>
     * @return The scope.
     */
    @java.lang.Override
    public java.lang.String getScope() {
      java.lang.Object ref = scope_;
      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()) {
          scope_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
     * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
     * </pre>
     *
     * <code>optional string scope = 4;</code>
     * @return The bytes for scope.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getScopeBytes() {
      java.lang.Object ref = scope_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        scope_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALIDATION_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation validation_;
    /**
     * <pre>
     * validation describes the schema used for validation and pruning of the custom resource.
     * If present, this validation schema is used to validate all versions.
     * Top-level and per-version schemas are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
     * @return Whether the validation field is set.
     */
    @java.lang.Override
    public boolean hasValidation() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * validation describes the schema used for validation and pruning of the custom resource.
     * If present, this validation schema is used to validate all versions.
     * Top-level and per-version schemas are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
     * @return The validation.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getValidation() {
      return validation_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : validation_;
    }
    /**
     * <pre>
     * validation describes the schema used for validation and pruning of the custom resource.
     * If present, this validation schema is used to validate all versions.
     * Top-level and per-version schemas are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder getValidationOrBuilder() {
      return validation_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : validation_;
    }

    public static final int SUBRESOURCES_FIELD_NUMBER = 6;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources subresources_;
    /**
     * <pre>
     * subresources specify what subresources the defined custom resource has.
     * If present, this field configures subresources for all versions.
     * Top-level and per-version subresources are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
     * @return Whether the subresources field is set.
     */
    @java.lang.Override
    public boolean hasSubresources() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * subresources specify what subresources the defined custom resource has.
     * If present, this field configures subresources for all versions.
     * Top-level and per-version subresources are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
     * @return The subresources.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getSubresources() {
      return subresources_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
    }
    /**
     * <pre>
     * subresources specify what subresources the defined custom resource has.
     * If present, this field configures subresources for all versions.
     * Top-level and per-version subresources are mutually exclusive.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder getSubresourcesOrBuilder() {
      return subresources_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
    }

    public static final int VERSIONS_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion> versions_;
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion> getVersionsList() {
      return versions_;
    }
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder> 
        getVersionsOrBuilderList() {
      return versions_;
    }
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    @java.lang.Override
    public int getVersionsCount() {
      return versions_.size();
    }
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion getVersions(int index) {
      return versions_.get(index);
    }
    /**
     * <pre>
     * versions is the list of all API versions of the defined custom resource.
     * Optional if `version` is specified.
     * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
     * Version names are used to compute the order in which served versions are listed in API discovery.
     * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
     * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
     * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
     * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
     * major version, then minor version. An example sorted list of versions:
     * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder getVersionsOrBuilder(
        int index) {
      return versions_.get(index);
    }

    public static final int ADDITIONALPRINTERCOLUMNS_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> additionalPrinterColumns_;
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> getAdditionalPrinterColumnsList() {
      return additionalPrinterColumns_;
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
        getAdditionalPrinterColumnsOrBuilderList() {
      return additionalPrinterColumns_;
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    @java.lang.Override
    public int getAdditionalPrinterColumnsCount() {
      return additionalPrinterColumns_.size();
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getAdditionalPrinterColumns(int index) {
      return additionalPrinterColumns_.get(index);
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * If present, this field configures columns for all versions.
     * Top-level and per-version columns are mutually exclusive.
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder getAdditionalPrinterColumnsOrBuilder(
        int index) {
      return additionalPrinterColumns_.get(index);
    }

    public static final int SELECTABLEFIELDS_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> selectableFields_;
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> getSelectableFieldsList() {
      return selectableFields_;
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
        getSelectableFieldsOrBuilderList() {
      return selectableFields_;
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    @java.lang.Override
    public int getSelectableFieldsCount() {
      return selectableFields_.size();
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getSelectableFields(int index) {
      return selectableFields_.get(index);
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder getSelectableFieldsOrBuilder(
        int index) {
      return selectableFields_.get(index);
    }

    public static final int CONVERSION_FIELD_NUMBER = 9;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion conversion_;
    /**
     * <pre>
     * conversion defines conversion settings for the CRD.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
     * @return Whether the conversion field is set.
     */
    @java.lang.Override
    public boolean hasConversion() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * conversion defines conversion settings for the CRD.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
     * @return The conversion.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion getConversion() {
      return conversion_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.getDefaultInstance() : conversion_;
    }
    /**
     * <pre>
     * conversion defines conversion settings for the CRD.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversionOrBuilder getConversionOrBuilder() {
      return conversion_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.getDefaultInstance() : conversion_;
    }

    public static final int PRESERVEUNKNOWNFIELDS_FIELD_NUMBER = 10;
    private boolean preserveUnknownFields_ = false;
    /**
     * <pre>
     * preserveUnknownFields indicates that object fields which are not specified
     * in the OpenAPI schema should be preserved when persisting to storage.
     * apiVersion, kind, metadata and known fields inside metadata are always preserved.
     * If false, schemas must be defined for all versions.
     * Defaults to true in v1beta for backwards compatibility.
     * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
     * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
     * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
     * +optional
     * </pre>
     *
     * <code>optional bool preserveUnknownFields = 10;</code>
     * @return Whether the preserveUnknownFields field is set.
     */
    @java.lang.Override
    public boolean hasPreserveUnknownFields() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * preserveUnknownFields indicates that object fields which are not specified
     * in the OpenAPI schema should be preserved when persisting to storage.
     * apiVersion, kind, metadata and known fields inside metadata are always preserved.
     * If false, schemas must be defined for all versions.
     * Defaults to true in v1beta for backwards compatibility.
     * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
     * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
     * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
     * +optional
     * </pre>
     *
     * <code>optional bool preserveUnknownFields = 10;</code>
     * @return The preserveUnknownFields.
     */
    @java.lang.Override
    public boolean getPreserveUnknownFields() {
      return preserveUnknownFields_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, group_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, version_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getNames());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, scope_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getValidation());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getSubresources());
      }
      for (int i = 0; i < versions_.size(); i++) {
        output.writeMessage(7, versions_.get(i));
      }
      for (int i = 0; i < additionalPrinterColumns_.size(); i++) {
        output.writeMessage(8, additionalPrinterColumns_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(9, getConversion());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeBool(10, preserveUnknownFields_);
      }
      for (int i = 0; i < selectableFields_.size(); i++) {
        output.writeMessage(11, selectableFields_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, group_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, version_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getNames());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, scope_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getValidation());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getSubresources());
      }
      for (int i = 0; i < versions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, versions_.get(i));
      }
      for (int i = 0; i < additionalPrinterColumns_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, additionalPrinterColumns_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getConversion());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, preserveUnknownFields_);
      }
      for (int i = 0; i < selectableFields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, selectableFields_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasGroup() != other.hasGroup()) return false;
      if (hasGroup()) {
        if (!getGroup()
            .equals(other.getGroup())) return false;
      }
      if (hasVersion() != other.hasVersion()) return false;
      if (hasVersion()) {
        if (!getVersion()
            .equals(other.getVersion())) return false;
      }
      if (hasNames() != other.hasNames()) return false;
      if (hasNames()) {
        if (!getNames()
            .equals(other.getNames())) return false;
      }
      if (hasScope() != other.hasScope()) return false;
      if (hasScope()) {
        if (!getScope()
            .equals(other.getScope())) return false;
      }
      if (hasValidation() != other.hasValidation()) return false;
      if (hasValidation()) {
        if (!getValidation()
            .equals(other.getValidation())) return false;
      }
      if (hasSubresources() != other.hasSubresources()) return false;
      if (hasSubresources()) {
        if (!getSubresources()
            .equals(other.getSubresources())) return false;
      }
      if (!getVersionsList()
          .equals(other.getVersionsList())) return false;
      if (!getAdditionalPrinterColumnsList()
          .equals(other.getAdditionalPrinterColumnsList())) return false;
      if (!getSelectableFieldsList()
          .equals(other.getSelectableFieldsList())) return false;
      if (hasConversion() != other.hasConversion()) return false;
      if (hasConversion()) {
        if (!getConversion()
            .equals(other.getConversion())) return false;
      }
      if (hasPreserveUnknownFields() != other.hasPreserveUnknownFields()) return false;
      if (hasPreserveUnknownFields()) {
        if (getPreserveUnknownFields()
            != other.getPreserveUnknownFields()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasGroup()) {
        hash = (37 * hash) + GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getGroup().hashCode();
      }
      if (hasVersion()) {
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getVersion().hashCode();
      }
      if (hasNames()) {
        hash = (37 * hash) + NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getNames().hashCode();
      }
      if (hasScope()) {
        hash = (37 * hash) + SCOPE_FIELD_NUMBER;
        hash = (53 * hash) + getScope().hashCode();
      }
      if (hasValidation()) {
        hash = (37 * hash) + VALIDATION_FIELD_NUMBER;
        hash = (53 * hash) + getValidation().hashCode();
      }
      if (hasSubresources()) {
        hash = (37 * hash) + SUBRESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getSubresources().hashCode();
      }
      if (getVersionsCount() > 0) {
        hash = (37 * hash) + VERSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getVersionsList().hashCode();
      }
      if (getAdditionalPrinterColumnsCount() > 0) {
        hash = (37 * hash) + ADDITIONALPRINTERCOLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getAdditionalPrinterColumnsList().hashCode();
      }
      if (getSelectableFieldsCount() > 0) {
        hash = (37 * hash) + SELECTABLEFIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getSelectableFieldsList().hashCode();
      }
      if (hasConversion()) {
        hash = (37 * hash) + CONVERSION_FIELD_NUMBER;
        hash = (53 * hash) + getConversion().hashCode();
      }
      if (hasPreserveUnknownFields()) {
        hash = (37 * hash) + PRESERVEUNKNOWNFIELDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPreserveUnknownFields());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceDefinitionSpec describes how a user wants their resource to appear
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpecOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getNamesFieldBuilder();
          getValidationFieldBuilder();
          getSubresourcesFieldBuilder();
          getVersionsFieldBuilder();
          getAdditionalPrinterColumnsFieldBuilder();
          getSelectableFieldsFieldBuilder();
          getConversionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        group_ = "";
        version_ = "";
        names_ = null;
        if (namesBuilder_ != null) {
          namesBuilder_.dispose();
          namesBuilder_ = null;
        }
        scope_ = "";
        validation_ = null;
        if (validationBuilder_ != null) {
          validationBuilder_.dispose();
          validationBuilder_ = null;
        }
        subresources_ = null;
        if (subresourcesBuilder_ != null) {
          subresourcesBuilder_.dispose();
          subresourcesBuilder_ = null;
        }
        if (versionsBuilder_ == null) {
          versions_ = java.util.Collections.emptyList();
        } else {
          versions_ = null;
          versionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (additionalPrinterColumnsBuilder_ == null) {
          additionalPrinterColumns_ = java.util.Collections.emptyList();
        } else {
          additionalPrinterColumns_ = null;
          additionalPrinterColumnsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (selectableFieldsBuilder_ == null) {
          selectableFields_ = java.util.Collections.emptyList();
        } else {
          selectableFields_ = null;
          selectableFieldsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        conversion_ = null;
        if (conversionBuilder_ != null) {
          conversionBuilder_.dispose();
          conversionBuilder_ = null;
        }
        preserveUnknownFields_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec result) {
        if (versionsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            versions_ = java.util.Collections.unmodifiableList(versions_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.versions_ = versions_;
        } else {
          result.versions_ = versionsBuilder_.build();
        }
        if (additionalPrinterColumnsBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            additionalPrinterColumns_ = java.util.Collections.unmodifiableList(additionalPrinterColumns_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.additionalPrinterColumns_ = additionalPrinterColumns_;
        } else {
          result.additionalPrinterColumns_ = additionalPrinterColumnsBuilder_.build();
        }
        if (selectableFieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            selectableFields_ = java.util.Collections.unmodifiableList(selectableFields_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.selectableFields_ = selectableFields_;
        } else {
          result.selectableFields_ = selectableFieldsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.group_ = group_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.version_ = version_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.names_ = namesBuilder_ == null
              ? names_
              : namesBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.scope_ = scope_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.validation_ = validationBuilder_ == null
              ? validation_
              : validationBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.subresources_ = subresourcesBuilder_ == null
              ? subresources_
              : subresourcesBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.conversion_ = conversionBuilder_ == null
              ? conversion_
              : conversionBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.preserveUnknownFields_ = preserveUnknownFields_;
          to_bitField0_ |= 0x00000080;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec.getDefaultInstance()) return this;
        if (other.hasGroup()) {
          group_ = other.group_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasVersion()) {
          version_ = other.version_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasNames()) {
          mergeNames(other.getNames());
        }
        if (other.hasScope()) {
          scope_ = other.scope_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasValidation()) {
          mergeValidation(other.getValidation());
        }
        if (other.hasSubresources()) {
          mergeSubresources(other.getSubresources());
        }
        if (versionsBuilder_ == null) {
          if (!other.versions_.isEmpty()) {
            if (versions_.isEmpty()) {
              versions_ = other.versions_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureVersionsIsMutable();
              versions_.addAll(other.versions_);
            }
            onChanged();
          }
        } else {
          if (!other.versions_.isEmpty()) {
            if (versionsBuilder_.isEmpty()) {
              versionsBuilder_.dispose();
              versionsBuilder_ = null;
              versions_ = other.versions_;
              bitField0_ = (bitField0_ & ~0x00000040);
              versionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVersionsFieldBuilder() : null;
            } else {
              versionsBuilder_.addAllMessages(other.versions_);
            }
          }
        }
        if (additionalPrinterColumnsBuilder_ == null) {
          if (!other.additionalPrinterColumns_.isEmpty()) {
            if (additionalPrinterColumns_.isEmpty()) {
              additionalPrinterColumns_ = other.additionalPrinterColumns_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureAdditionalPrinterColumnsIsMutable();
              additionalPrinterColumns_.addAll(other.additionalPrinterColumns_);
            }
            onChanged();
          }
        } else {
          if (!other.additionalPrinterColumns_.isEmpty()) {
            if (additionalPrinterColumnsBuilder_.isEmpty()) {
              additionalPrinterColumnsBuilder_.dispose();
              additionalPrinterColumnsBuilder_ = null;
              additionalPrinterColumns_ = other.additionalPrinterColumns_;
              bitField0_ = (bitField0_ & ~0x00000080);
              additionalPrinterColumnsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAdditionalPrinterColumnsFieldBuilder() : null;
            } else {
              additionalPrinterColumnsBuilder_.addAllMessages(other.additionalPrinterColumns_);
            }
          }
        }
        if (selectableFieldsBuilder_ == null) {
          if (!other.selectableFields_.isEmpty()) {
            if (selectableFields_.isEmpty()) {
              selectableFields_ = other.selectableFields_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureSelectableFieldsIsMutable();
              selectableFields_.addAll(other.selectableFields_);
            }
            onChanged();
          }
        } else {
          if (!other.selectableFields_.isEmpty()) {
            if (selectableFieldsBuilder_.isEmpty()) {
              selectableFieldsBuilder_.dispose();
              selectableFieldsBuilder_ = null;
              selectableFields_ = other.selectableFields_;
              bitField0_ = (bitField0_ & ~0x00000100);
              selectableFieldsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSelectableFieldsFieldBuilder() : null;
            } else {
              selectableFieldsBuilder_.addAllMessages(other.selectableFields_);
            }
          }
        }
        if (other.hasConversion()) {
          mergeConversion(other.getConversion());
        }
        if (other.hasPreserveUnknownFields()) {
          setPreserveUnknownFields(other.getPreserveUnknownFields());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                group_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                version_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getNamesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                scope_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getValidationFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getSubresourcesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.parser(),
                        extensionRegistry);
                if (versionsBuilder_ == null) {
                  ensureVersionsIsMutable();
                  versions_.add(m);
                } else {
                  versionsBuilder_.addMessage(m);
                }
                break;
              } // case 58
              case 66: {
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.parser(),
                        extensionRegistry);
                if (additionalPrinterColumnsBuilder_ == null) {
                  ensureAdditionalPrinterColumnsIsMutable();
                  additionalPrinterColumns_.add(m);
                } else {
                  additionalPrinterColumnsBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getConversionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 74
              case 80: {
                preserveUnknownFields_ = input.readBool();
                bitField0_ |= 0x00000400;
                break;
              } // case 80
              case 90: {
                io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.parser(),
                        extensionRegistry);
                if (selectableFieldsBuilder_ == null) {
                  ensureSelectableFieldsIsMutable();
                  selectableFields_.add(m);
                } else {
                  selectableFieldsBuilder_.addMessage(m);
                }
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object group_ = "";
      /**
       * <pre>
       * group is the API group of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/...`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * </pre>
       *
       * <code>optional string group = 1;</code>
       * @return Whether the group field is set.
       */
      public boolean hasGroup() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * group is the API group of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/...`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * </pre>
       *
       * <code>optional string group = 1;</code>
       * @return The group.
       */
      public java.lang.String getGroup() {
        java.lang.Object ref = group_;
        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()) {
            group_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * group is the API group of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/...`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * </pre>
       *
       * <code>optional string group = 1;</code>
       * @return The bytes for group.
       */
      public com.google.protobuf.ByteString
          getGroupBytes() {
        java.lang.Object ref = group_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          group_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * group is the API group of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/...`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * </pre>
       *
       * <code>optional string group = 1;</code>
       * @param value The group to set.
       * @return This builder for chaining.
       */
      public Builder setGroup(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        group_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * group is the API group of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/...`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * </pre>
       *
       * <code>optional string group = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearGroup() {
        group_ = getDefaultInstance().getGroup();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * group is the API group of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/...`.
       * Must match the name of the CustomResourceDefinition (in the form `&lt;names.plural&gt;.&lt;group&gt;`).
       * </pre>
       *
       * <code>optional string group = 1;</code>
       * @param value The bytes for group to set.
       * @return This builder for chaining.
       */
      public Builder setGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        group_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <pre>
       * version is the API version of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
       * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
       * Optional if `versions` is specified.
       * Deprecated: use `versions` instead.
       * +optional
       * </pre>
       *
       * <code>optional string version = 2;</code>
       * @return Whether the version field is set.
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * version is the API version of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
       * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
       * Optional if `versions` is specified.
       * Deprecated: use `versions` instead.
       * +optional
       * </pre>
       *
       * <code>optional string version = 2;</code>
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        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()) {
            version_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * version is the API version of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
       * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
       * Optional if `versions` is specified.
       * Deprecated: use `versions` instead.
       * +optional
       * </pre>
       *
       * <code>optional string version = 2;</code>
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * version is the API version of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
       * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
       * Optional if `versions` is specified.
       * Deprecated: use `versions` instead.
       * +optional
       * </pre>
       *
       * <code>optional string version = 2;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        version_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * version is the API version of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
       * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
       * Optional if `versions` is specified.
       * Deprecated: use `versions` instead.
       * +optional
       * </pre>
       *
       * <code>optional string version = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        version_ = getDefaultInstance().getVersion();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * version is the API version of the defined custom resource.
       * The custom resources are served under `/apis/&lt;group&gt;/&lt;version&gt;/...`.
       * Must match the name of the first item in the `versions` list if `version` and `versions` are both specified.
       * Optional if `versions` is specified.
       * Deprecated: use `versions` instead.
       * +optional
       * </pre>
       *
       * <code>optional string version = 2;</code>
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        version_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames names_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder> namesBuilder_;
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       * @return Whether the names field is set.
       */
      public boolean hasNames() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       * @return The names.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getNames() {
        if (namesBuilder_ == null) {
          return names_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : names_;
        } else {
          return namesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       */
      public Builder setNames(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames value) {
        if (namesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          names_ = value;
        } else {
          namesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       */
      public Builder setNames(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder builderForValue) {
        if (namesBuilder_ == null) {
          names_ = builderForValue.build();
        } else {
          namesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       */
      public Builder mergeNames(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames value) {
        if (namesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            names_ != null &&
            names_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance()) {
            getNamesBuilder().mergeFrom(value);
          } else {
            names_ = value;
          }
        } else {
          namesBuilder_.mergeFrom(value);
        }
        if (names_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       */
      public Builder clearNames() {
        bitField0_ = (bitField0_ & ~0x00000004);
        names_ = null;
        if (namesBuilder_ != null) {
          namesBuilder_.dispose();
          namesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder getNamesBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getNamesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder getNamesOrBuilder() {
        if (namesBuilder_ != null) {
          return namesBuilder_.getMessageOrBuilder();
        } else {
          return names_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : names_;
        }
      }
      /**
       * <pre>
       * names specify the resource and kind names for the custom resource.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames names = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder> 
          getNamesFieldBuilder() {
        if (namesBuilder_ == null) {
          namesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder>(
                  getNames(),
                  getParentForChildren(),
                  isClean());
          names_ = null;
        }
        return namesBuilder_;
      }

      private java.lang.Object scope_ = "";
      /**
       * <pre>
       * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
       * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
       * </pre>
       *
       * <code>optional string scope = 4;</code>
       * @return Whether the scope field is set.
       */
      public boolean hasScope() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
       * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
       * </pre>
       *
       * <code>optional string scope = 4;</code>
       * @return The scope.
       */
      public java.lang.String getScope() {
        java.lang.Object ref = scope_;
        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()) {
            scope_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
       * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
       * </pre>
       *
       * <code>optional string scope = 4;</code>
       * @return The bytes for scope.
       */
      public com.google.protobuf.ByteString
          getScopeBytes() {
        java.lang.Object ref = scope_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          scope_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
       * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
       * </pre>
       *
       * <code>optional string scope = 4;</code>
       * @param value The scope to set.
       * @return This builder for chaining.
       */
      public Builder setScope(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        scope_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
       * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
       * </pre>
       *
       * <code>optional string scope = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearScope() {
        scope_ = getDefaultInstance().getScope();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scope indicates whether the defined custom resource is cluster- or namespace-scoped.
       * Allowed values are `Cluster` and `Namespaced`. Default is `Namespaced`.
       * </pre>
       *
       * <code>optional string scope = 4;</code>
       * @param value The bytes for scope to set.
       * @return This builder for chaining.
       */
      public Builder setScopeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        scope_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation validation_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder> validationBuilder_;
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       * @return Whether the validation field is set.
       */
      public boolean hasValidation() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       * @return The validation.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getValidation() {
        if (validationBuilder_ == null) {
          return validation_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : validation_;
        } else {
          return validationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       */
      public Builder setValidation(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation value) {
        if (validationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          validation_ = value;
        } else {
          validationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       */
      public Builder setValidation(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder builderForValue) {
        if (validationBuilder_ == null) {
          validation_ = builderForValue.build();
        } else {
          validationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       */
      public Builder mergeValidation(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation value) {
        if (validationBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            validation_ != null &&
            validation_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance()) {
            getValidationBuilder().mergeFrom(value);
          } else {
            validation_ = value;
          }
        } else {
          validationBuilder_.mergeFrom(value);
        }
        if (validation_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       */
      public Builder clearValidation() {
        bitField0_ = (bitField0_ & ~0x00000010);
        validation_ = null;
        if (validationBuilder_ != null) {
          validationBuilder_.dispose();
          validationBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder getValidationBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getValidationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder getValidationOrBuilder() {
        if (validationBuilder_ != null) {
          return validationBuilder_.getMessageOrBuilder();
        } else {
          return validation_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : validation_;
        }
      }
      /**
       * <pre>
       * validation describes the schema used for validation and pruning of the custom resource.
       * If present, this validation schema is used to validate all versions.
       * Top-level and per-version schemas are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation validation = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder> 
          getValidationFieldBuilder() {
        if (validationBuilder_ == null) {
          validationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder>(
                  getValidation(),
                  getParentForChildren(),
                  isClean());
          validation_ = null;
        }
        return validationBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources subresources_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder> subresourcesBuilder_;
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       * @return Whether the subresources field is set.
       */
      public boolean hasSubresources() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       * @return The subresources.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getSubresources() {
        if (subresourcesBuilder_ == null) {
          return subresources_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
        } else {
          return subresourcesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       */
      public Builder setSubresources(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources value) {
        if (subresourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          subresources_ = value;
        } else {
          subresourcesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       */
      public Builder setSubresources(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder builderForValue) {
        if (subresourcesBuilder_ == null) {
          subresources_ = builderForValue.build();
        } else {
          subresourcesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       */
      public Builder mergeSubresources(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources value) {
        if (subresourcesBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            subresources_ != null &&
            subresources_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance()) {
            getSubresourcesBuilder().mergeFrom(value);
          } else {
            subresources_ = value;
          }
        } else {
          subresourcesBuilder_.mergeFrom(value);
        }
        if (subresources_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       */
      public Builder clearSubresources() {
        bitField0_ = (bitField0_ & ~0x00000020);
        subresources_ = null;
        if (subresourcesBuilder_ != null) {
          subresourcesBuilder_.dispose();
          subresourcesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder getSubresourcesBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getSubresourcesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder getSubresourcesOrBuilder() {
        if (subresourcesBuilder_ != null) {
          return subresourcesBuilder_.getMessageOrBuilder();
        } else {
          return subresources_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
        }
      }
      /**
       * <pre>
       * subresources specify what subresources the defined custom resource has.
       * If present, this field configures subresources for all versions.
       * Top-level and per-version subresources are mutually exclusive.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder> 
          getSubresourcesFieldBuilder() {
        if (subresourcesBuilder_ == null) {
          subresourcesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder>(
                  getSubresources(),
                  getParentForChildren(),
                  isClean());
          subresources_ = null;
        }
        return subresourcesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion> versions_ =
        java.util.Collections.emptyList();
      private void ensureVersionsIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          versions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion>(versions_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder> versionsBuilder_;

      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion> getVersionsList() {
        if (versionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(versions_);
        } else {
          return versionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public int getVersionsCount() {
        if (versionsBuilder_ == null) {
          return versions_.size();
        } else {
          return versionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion getVersions(int index) {
        if (versionsBuilder_ == null) {
          return versions_.get(index);
        } else {
          return versionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder setVersions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion value) {
        if (versionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVersionsIsMutable();
          versions_.set(index, value);
          onChanged();
        } else {
          versionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder setVersions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder builderForValue) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.set(index, builderForValue.build());
          onChanged();
        } else {
          versionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder addVersions(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion value) {
        if (versionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVersionsIsMutable();
          versions_.add(value);
          onChanged();
        } else {
          versionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder addVersions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion value) {
        if (versionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVersionsIsMutable();
          versions_.add(index, value);
          onChanged();
        } else {
          versionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder addVersions(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder builderForValue) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.add(builderForValue.build());
          onChanged();
        } else {
          versionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder addVersions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder builderForValue) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.add(index, builderForValue.build());
          onChanged();
        } else {
          versionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder addAllVersions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion> values) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, versions_);
          onChanged();
        } else {
          versionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder clearVersions() {
        if (versionsBuilder_ == null) {
          versions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          versionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public Builder removeVersions(int index) {
        if (versionsBuilder_ == null) {
          ensureVersionsIsMutable();
          versions_.remove(index);
          onChanged();
        } else {
          versionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder getVersionsBuilder(
          int index) {
        return getVersionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder getVersionsOrBuilder(
          int index) {
        if (versionsBuilder_ == null) {
          return versions_.get(index);  } else {
          return versionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder> 
           getVersionsOrBuilderList() {
        if (versionsBuilder_ != null) {
          return versionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(versions_);
        }
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder addVersionsBuilder() {
        return getVersionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.getDefaultInstance());
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder addVersionsBuilder(
          int index) {
        return getVersionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.getDefaultInstance());
      }
      /**
       * <pre>
       * versions is the list of all API versions of the defined custom resource.
       * Optional if `version` is specified.
       * The name of the first item in the `versions` list must match the `version` field if `version` and `versions` are both specified.
       * Version names are used to compute the order in which served versions are listed in API discovery.
       * If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
       * lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
       * then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
       * by GA &gt; beta &gt; alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
       * major version, then minor version. An example sorted list of versions:
       * v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion versions = 7;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder> 
           getVersionsBuilderList() {
        return getVersionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder> 
          getVersionsFieldBuilder() {
        if (versionsBuilder_ == null) {
          versionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder>(
                  versions_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          versions_ = null;
        }
        return versionsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> additionalPrinterColumns_ =
        java.util.Collections.emptyList();
      private void ensureAdditionalPrinterColumnsIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          additionalPrinterColumns_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition>(additionalPrinterColumns_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> additionalPrinterColumnsBuilder_;

      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> getAdditionalPrinterColumnsList() {
        if (additionalPrinterColumnsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(additionalPrinterColumns_);
        } else {
          return additionalPrinterColumnsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public int getAdditionalPrinterColumnsCount() {
        if (additionalPrinterColumnsBuilder_ == null) {
          return additionalPrinterColumns_.size();
        } else {
          return additionalPrinterColumnsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getAdditionalPrinterColumns(int index) {
        if (additionalPrinterColumnsBuilder_ == null) {
          return additionalPrinterColumns_.get(index);
        } else {
          return additionalPrinterColumnsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder setAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition value) {
        if (additionalPrinterColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.set(index, value);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder setAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder builderForValue) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.set(index, builderForValue.build());
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder addAdditionalPrinterColumns(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition value) {
        if (additionalPrinterColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(value);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder addAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition value) {
        if (additionalPrinterColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(index, value);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder addAdditionalPrinterColumns(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder builderForValue) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(builderForValue.build());
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder addAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder builderForValue) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(index, builderForValue.build());
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder addAllAdditionalPrinterColumns(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> values) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, additionalPrinterColumns_);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder clearAdditionalPrinterColumns() {
        if (additionalPrinterColumnsBuilder_ == null) {
          additionalPrinterColumns_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public Builder removeAdditionalPrinterColumns(int index) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.remove(index);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder getAdditionalPrinterColumnsBuilder(
          int index) {
        return getAdditionalPrinterColumnsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder getAdditionalPrinterColumnsOrBuilder(
          int index) {
        if (additionalPrinterColumnsBuilder_ == null) {
          return additionalPrinterColumns_.get(index);  } else {
          return additionalPrinterColumnsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
           getAdditionalPrinterColumnsOrBuilderList() {
        if (additionalPrinterColumnsBuilder_ != null) {
          return additionalPrinterColumnsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(additionalPrinterColumns_);
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder addAdditionalPrinterColumnsBuilder() {
        return getAdditionalPrinterColumnsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder addAdditionalPrinterColumnsBuilder(
          int index) {
        return getAdditionalPrinterColumnsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * If present, this field configures columns for all versions.
       * Top-level and per-version columns are mutually exclusive.
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 8;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder> 
           getAdditionalPrinterColumnsBuilderList() {
        return getAdditionalPrinterColumnsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
          getAdditionalPrinterColumnsFieldBuilder() {
        if (additionalPrinterColumnsBuilder_ == null) {
          additionalPrinterColumnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder>(
                  additionalPrinterColumns_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          additionalPrinterColumns_ = null;
        }
        return additionalPrinterColumnsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> selectableFields_ =
        java.util.Collections.emptyList();
      private void ensureSelectableFieldsIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          selectableFields_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField>(selectableFields_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> selectableFieldsBuilder_;

      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> getSelectableFieldsList() {
        if (selectableFieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(selectableFields_);
        } else {
          return selectableFieldsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public int getSelectableFieldsCount() {
        if (selectableFieldsBuilder_ == null) {
          return selectableFields_.size();
        } else {
          return selectableFieldsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getSelectableFields(int index) {
        if (selectableFieldsBuilder_ == null) {
          return selectableFields_.get(index);
        } else {
          return selectableFieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder setSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField value) {
        if (selectableFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectableFieldsIsMutable();
          selectableFields_.set(index, value);
          onChanged();
        } else {
          selectableFieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder setSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder builderForValue) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.set(index, builderForValue.build());
          onChanged();
        } else {
          selectableFieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder addSelectableFields(io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField value) {
        if (selectableFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(value);
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder addSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField value) {
        if (selectableFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(index, value);
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder addSelectableFields(
          io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder builderForValue) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(builderForValue.build());
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder addSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder builderForValue) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(index, builderForValue.build());
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder addAllSelectableFields(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> values) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, selectableFields_);
          onChanged();
        } else {
          selectableFieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder clearSelectableFields() {
        if (selectableFieldsBuilder_ == null) {
          selectableFields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          selectableFieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public Builder removeSelectableFields(int index) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.remove(index);
          onChanged();
        } else {
          selectableFieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder getSelectableFieldsBuilder(
          int index) {
        return getSelectableFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder getSelectableFieldsOrBuilder(
          int index) {
        if (selectableFieldsBuilder_ == null) {
          return selectableFields_.get(index);  } else {
          return selectableFieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
           getSelectableFieldsOrBuilderList() {
        if (selectableFieldsBuilder_ != null) {
          return selectableFieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(selectableFields_);
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder addSelectableFieldsBuilder() {
        return getSelectableFieldsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.getDefaultInstance());
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder addSelectableFieldsBuilder(
          int index) {
        return getSelectableFieldsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.getDefaultInstance());
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 11;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder> 
           getSelectableFieldsBuilderList() {
        return getSelectableFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
          getSelectableFieldsFieldBuilder() {
        if (selectableFieldsBuilder_ == null) {
          selectableFieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder>(
                  selectableFields_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          selectableFields_ = null;
        }
        return selectableFieldsBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion conversion_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversionOrBuilder> conversionBuilder_;
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       * @return Whether the conversion field is set.
       */
      public boolean hasConversion() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       * @return The conversion.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion getConversion() {
        if (conversionBuilder_ == null) {
          return conversion_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.getDefaultInstance() : conversion_;
        } else {
          return conversionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       */
      public Builder setConversion(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion value) {
        if (conversionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          conversion_ = value;
        } else {
          conversionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       */
      public Builder setConversion(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.Builder builderForValue) {
        if (conversionBuilder_ == null) {
          conversion_ = builderForValue.build();
        } else {
          conversionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       */
      public Builder mergeConversion(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion value) {
        if (conversionBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            conversion_ != null &&
            conversion_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.getDefaultInstance()) {
            getConversionBuilder().mergeFrom(value);
          } else {
            conversion_ = value;
          }
        } else {
          conversionBuilder_.mergeFrom(value);
        }
        if (conversion_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       */
      public Builder clearConversion() {
        bitField0_ = (bitField0_ & ~0x00000200);
        conversion_ = null;
        if (conversionBuilder_ != null) {
          conversionBuilder_.dispose();
          conversionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.Builder getConversionBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getConversionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversionOrBuilder getConversionOrBuilder() {
        if (conversionBuilder_ != null) {
          return conversionBuilder_.getMessageOrBuilder();
        } else {
          return conversion_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.getDefaultInstance() : conversion_;
        }
      }
      /**
       * <pre>
       * conversion defines conversion settings for the CRD.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceConversion conversion = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversionOrBuilder> 
          getConversionFieldBuilder() {
        if (conversionBuilder_ == null) {
          conversionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversion.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceConversionOrBuilder>(
                  getConversion(),
                  getParentForChildren(),
                  isClean());
          conversion_ = null;
        }
        return conversionBuilder_;
      }

      private boolean preserveUnknownFields_ ;
      /**
       * <pre>
       * preserveUnknownFields indicates that object fields which are not specified
       * in the OpenAPI schema should be preserved when persisting to storage.
       * apiVersion, kind, metadata and known fields inside metadata are always preserved.
       * If false, schemas must be defined for all versions.
       * Defaults to true in v1beta for backwards compatibility.
       * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
       * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
       * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
       * +optional
       * </pre>
       *
       * <code>optional bool preserveUnknownFields = 10;</code>
       * @return Whether the preserveUnknownFields field is set.
       */
      @java.lang.Override
      public boolean hasPreserveUnknownFields() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * preserveUnknownFields indicates that object fields which are not specified
       * in the OpenAPI schema should be preserved when persisting to storage.
       * apiVersion, kind, metadata and known fields inside metadata are always preserved.
       * If false, schemas must be defined for all versions.
       * Defaults to true in v1beta for backwards compatibility.
       * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
       * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
       * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
       * +optional
       * </pre>
       *
       * <code>optional bool preserveUnknownFields = 10;</code>
       * @return The preserveUnknownFields.
       */
      @java.lang.Override
      public boolean getPreserveUnknownFields() {
        return preserveUnknownFields_;
      }
      /**
       * <pre>
       * preserveUnknownFields indicates that object fields which are not specified
       * in the OpenAPI schema should be preserved when persisting to storage.
       * apiVersion, kind, metadata and known fields inside metadata are always preserved.
       * If false, schemas must be defined for all versions.
       * Defaults to true in v1beta for backwards compatibility.
       * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
       * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
       * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
       * +optional
       * </pre>
       *
       * <code>optional bool preserveUnknownFields = 10;</code>
       * @param value The preserveUnknownFields to set.
       * @return This builder for chaining.
       */
      public Builder setPreserveUnknownFields(boolean value) {

        preserveUnknownFields_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * preserveUnknownFields indicates that object fields which are not specified
       * in the OpenAPI schema should be preserved when persisting to storage.
       * apiVersion, kind, metadata and known fields inside metadata are always preserved.
       * If false, schemas must be defined for all versions.
       * Defaults to true in v1beta for backwards compatibility.
       * Deprecated: will be required to be false in v1. Preservation of unknown fields can be specified
       * in the validation schema using the `x-kubernetes-preserve-unknown-fields: true` extension.
       * See https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning for details.
       * +optional
       * </pre>
       *
       * <code>optional bool preserveUnknownFields = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreserveUnknownFields() {
        bitField0_ = (bitField0_ & ~0x00000400);
        preserveUnknownFields_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionSpec)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionSpec getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceDefinitionStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition> 
        getConditionsList();
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition getConditions(int index);
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    int getConditionsCount();
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder> 
        getConditionsOrBuilderList();
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder getConditionsOrBuilder(
        int index);

    /**
     * <pre>
     * acceptedNames are the names that are actually being used to serve discovery.
     * They may be different than the names in spec.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
     * @return Whether the acceptedNames field is set.
     */
    boolean hasAcceptedNames();
    /**
     * <pre>
     * acceptedNames are the names that are actually being used to serve discovery.
     * They may be different than the names in spec.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
     * @return The acceptedNames.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getAcceptedNames();
    /**
     * <pre>
     * acceptedNames are the names that are actually being used to serve discovery.
     * They may be different than the names in spec.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder getAcceptedNamesOrBuilder();

    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @return A list containing the storedVersions.
     */
    java.util.List<java.lang.String>
        getStoredVersionsList();
    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @return The count of storedVersions.
     */
    int getStoredVersionsCount();
    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @param index The index of the element to return.
     * @return The storedVersions at the given index.
     */
    java.lang.String getStoredVersions(int index);
    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the storedVersions at the given index.
     */
    com.google.protobuf.ByteString
        getStoredVersionsBytes(int index);
  }
  /**
   * <pre>
   * CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus}
   */
  public static final class CustomResourceDefinitionStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus)
      CustomResourceDefinitionStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceDefinitionStatus.class.getName());
    }
    // Use CustomResourceDefinitionStatus.newBuilder() to construct.
    private CustomResourceDefinitionStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceDefinitionStatus() {
      conditions_ = java.util.Collections.emptyList();
      storedVersions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.Builder.class);
    }

    private int bitField0_;
    public static final int CONDITIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition> conditions_;
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition> getConditionsList() {
      return conditions_;
    }
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder> 
        getConditionsOrBuilderList() {
      return conditions_;
    }
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    @java.lang.Override
    public int getConditionsCount() {
      return conditions_.size();
    }
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition getConditions(int index) {
      return conditions_.get(index);
    }
    /**
     * <pre>
     * conditions indicate state for particular aspects of a CustomResourceDefinition
     * +optional
     * +listType=map
     * +listMapKey=type
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder getConditionsOrBuilder(
        int index) {
      return conditions_.get(index);
    }

    public static final int ACCEPTEDNAMES_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames acceptedNames_;
    /**
     * <pre>
     * acceptedNames are the names that are actually being used to serve discovery.
     * They may be different than the names in spec.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
     * @return Whether the acceptedNames field is set.
     */
    @java.lang.Override
    public boolean hasAcceptedNames() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * acceptedNames are the names that are actually being used to serve discovery.
     * They may be different than the names in spec.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
     * @return The acceptedNames.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getAcceptedNames() {
      return acceptedNames_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : acceptedNames_;
    }
    /**
     * <pre>
     * acceptedNames are the names that are actually being used to serve discovery.
     * They may be different than the names in spec.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder getAcceptedNamesOrBuilder() {
      return acceptedNames_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : acceptedNames_;
    }

    public static final int STOREDVERSIONS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList storedVersions_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @return A list containing the storedVersions.
     */
    public com.google.protobuf.ProtocolStringList
        getStoredVersionsList() {
      return storedVersions_;
    }
    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @return The count of storedVersions.
     */
    public int getStoredVersionsCount() {
      return storedVersions_.size();
    }
    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @param index The index of the element to return.
     * @return The storedVersions at the given index.
     */
    public java.lang.String getStoredVersions(int index) {
      return storedVersions_.get(index);
    }
    /**
     * <pre>
     * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
     * versions allows a migration path for stored versions in etcd. The field is mutable
     * so a migration controller can finish a migration to another version (ensuring
     * no old objects are left in storage), and then remove the rest of the
     * versions from this list.
     * Versions may not be removed from `spec.versions` while they exist in this list.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string storedVersions = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the storedVersions at the given index.
     */
    public com.google.protobuf.ByteString
        getStoredVersionsBytes(int index) {
      return storedVersions_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < conditions_.size(); i++) {
        output.writeMessage(1, conditions_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(2, getAcceptedNames());
      }
      for (int i = 0; i < storedVersions_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, storedVersions_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < conditions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, conditions_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getAcceptedNames());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < storedVersions_.size(); i++) {
          dataSize += computeStringSizeNoTag(storedVersions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getStoredVersionsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getConditionsList()
          .equals(other.getConditionsList())) return false;
      if (hasAcceptedNames() != other.hasAcceptedNames()) return false;
      if (hasAcceptedNames()) {
        if (!getAcceptedNames()
            .equals(other.getAcceptedNames())) return false;
      }
      if (!getStoredVersionsList()
          .equals(other.getStoredVersionsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getConditionsCount() > 0) {
        hash = (37 * hash) + CONDITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConditionsList().hashCode();
      }
      if (hasAcceptedNames()) {
        hash = (37 * hash) + ACCEPTEDNAMES_FIELD_NUMBER;
        hash = (53 * hash) + getAcceptedNames().hashCode();
      }
      if (getStoredVersionsCount() > 0) {
        hash = (37 * hash) + STOREDVERSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getStoredVersionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceDefinitionStatus indicates the state of the CustomResourceDefinition
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getConditionsFieldBuilder();
          getAcceptedNamesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
        } else {
          conditions_ = null;
          conditionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        acceptedNames_ = null;
        if (acceptedNamesBuilder_ != null) {
          acceptedNamesBuilder_.dispose();
          acceptedNamesBuilder_ = null;
        }
        storedVersions_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus result) {
        if (conditionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            conditions_ = java.util.Collections.unmodifiableList(conditions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.conditions_ = conditions_;
        } else {
          result.conditions_ = conditionsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.acceptedNames_ = acceptedNamesBuilder_ == null
              ? acceptedNames_
              : acceptedNamesBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          storedVersions_.makeImmutable();
          result.storedVersions_ = storedVersions_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus.getDefaultInstance()) return this;
        if (conditionsBuilder_ == null) {
          if (!other.conditions_.isEmpty()) {
            if (conditions_.isEmpty()) {
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConditionsIsMutable();
              conditions_.addAll(other.conditions_);
            }
            onChanged();
          }
        } else {
          if (!other.conditions_.isEmpty()) {
            if (conditionsBuilder_.isEmpty()) {
              conditionsBuilder_.dispose();
              conditionsBuilder_ = null;
              conditions_ = other.conditions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              conditionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getConditionsFieldBuilder() : null;
            } else {
              conditionsBuilder_.addAllMessages(other.conditions_);
            }
          }
        }
        if (other.hasAcceptedNames()) {
          mergeAcceptedNames(other.getAcceptedNames());
        }
        if (!other.storedVersions_.isEmpty()) {
          if (storedVersions_.isEmpty()) {
            storedVersions_ = other.storedVersions_;
            bitField0_ |= 0x00000004;
          } else {
            ensureStoredVersionsIsMutable();
            storedVersions_.addAll(other.storedVersions_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.parser(),
                        extensionRegistry);
                if (conditionsBuilder_ == null) {
                  ensureConditionsIsMutable();
                  conditions_.add(m);
                } else {
                  conditionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getAcceptedNamesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureStoredVersionsIsMutable();
                storedVersions_.add(bs);
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition> conditions_ =
        java.util.Collections.emptyList();
      private void ensureConditionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          conditions_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition>(conditions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder> conditionsBuilder_;

      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition> getConditionsList() {
        if (conditionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(conditions_);
        } else {
          return conditionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public int getConditionsCount() {
        if (conditionsBuilder_ == null) {
          return conditions_.size();
        } else {
          return conditionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition getConditions(int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);
        } else {
          return conditionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.set(index, value);
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder setConditions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.set(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder addConditions(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition value) {
        if (conditionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConditionsIsMutable();
          conditions_.add(index, value);
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder addConditions(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder addConditions(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder builderForValue) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.add(index, builderForValue.build());
          onChanged();
        } else {
          conditionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder addAllConditions(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition> values) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, conditions_);
          onChanged();
        } else {
          conditionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder clearConditions() {
        if (conditionsBuilder_ == null) {
          conditions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          conditionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public Builder removeConditions(int index) {
        if (conditionsBuilder_ == null) {
          ensureConditionsIsMutable();
          conditions_.remove(index);
          onChanged();
        } else {
          conditionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder getConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder getConditionsOrBuilder(
          int index) {
        if (conditionsBuilder_ == null) {
          return conditions_.get(index);  } else {
          return conditionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder> 
           getConditionsOrBuilderList() {
        if (conditionsBuilder_ != null) {
          return conditionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(conditions_);
        }
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder addConditionsBuilder() {
        return getConditionsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder addConditionsBuilder(
          int index) {
        return getConditionsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.getDefaultInstance());
      }
      /**
       * <pre>
       * conditions indicate state for particular aspects of a CustomResourceDefinition
       * +optional
       * +listType=map
       * +listMapKey=type
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionCondition conditions = 1;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder> 
           getConditionsBuilderList() {
        return getConditionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder> 
          getConditionsFieldBuilder() {
        if (conditionsBuilder_ == null) {
          conditionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionCondition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionConditionOrBuilder>(
                  conditions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          conditions_ = null;
        }
        return conditionsBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames acceptedNames_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder> acceptedNamesBuilder_;
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       * @return Whether the acceptedNames field is set.
       */
      public boolean hasAcceptedNames() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       * @return The acceptedNames.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames getAcceptedNames() {
        if (acceptedNamesBuilder_ == null) {
          return acceptedNames_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : acceptedNames_;
        } else {
          return acceptedNamesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       */
      public Builder setAcceptedNames(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames value) {
        if (acceptedNamesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          acceptedNames_ = value;
        } else {
          acceptedNamesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       */
      public Builder setAcceptedNames(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder builderForValue) {
        if (acceptedNamesBuilder_ == null) {
          acceptedNames_ = builderForValue.build();
        } else {
          acceptedNamesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       */
      public Builder mergeAcceptedNames(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames value) {
        if (acceptedNamesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            acceptedNames_ != null &&
            acceptedNames_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance()) {
            getAcceptedNamesBuilder().mergeFrom(value);
          } else {
            acceptedNames_ = value;
          }
        } else {
          acceptedNamesBuilder_.mergeFrom(value);
        }
        if (acceptedNames_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       */
      public Builder clearAcceptedNames() {
        bitField0_ = (bitField0_ & ~0x00000002);
        acceptedNames_ = null;
        if (acceptedNamesBuilder_ != null) {
          acceptedNamesBuilder_.dispose();
          acceptedNamesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder getAcceptedNamesBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getAcceptedNamesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder getAcceptedNamesOrBuilder() {
        if (acceptedNamesBuilder_ != null) {
          return acceptedNamesBuilder_.getMessageOrBuilder();
        } else {
          return acceptedNames_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.getDefaultInstance() : acceptedNames_;
        }
      }
      /**
       * <pre>
       * acceptedNames are the names that are actually being used to serve discovery.
       * They may be different than the names in spec.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionNames acceptedNames = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder> 
          getAcceptedNamesFieldBuilder() {
        if (acceptedNamesBuilder_ == null) {
          acceptedNamesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNames.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionNamesOrBuilder>(
                  getAcceptedNames(),
                  getParentForChildren(),
                  isClean());
          acceptedNames_ = null;
        }
        return acceptedNamesBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList storedVersions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureStoredVersionsIsMutable() {
        if (!storedVersions_.isModifiable()) {
          storedVersions_ = new com.google.protobuf.LazyStringArrayList(storedVersions_);
        }
        bitField0_ |= 0x00000004;
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @return A list containing the storedVersions.
       */
      public com.google.protobuf.ProtocolStringList
          getStoredVersionsList() {
        storedVersions_.makeImmutable();
        return storedVersions_;
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @return The count of storedVersions.
       */
      public int getStoredVersionsCount() {
        return storedVersions_.size();
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @param index The index of the element to return.
       * @return The storedVersions at the given index.
       */
      public java.lang.String getStoredVersions(int index) {
        return storedVersions_.get(index);
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the storedVersions at the given index.
       */
      public com.google.protobuf.ByteString
          getStoredVersionsBytes(int index) {
        return storedVersions_.getByteString(index);
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @param index The index to set the value at.
       * @param value The storedVersions to set.
       * @return This builder for chaining.
       */
      public Builder setStoredVersions(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureStoredVersionsIsMutable();
        storedVersions_.set(index, value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @param value The storedVersions to add.
       * @return This builder for chaining.
       */
      public Builder addStoredVersions(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureStoredVersionsIsMutable();
        storedVersions_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @param values The storedVersions to add.
       * @return This builder for chaining.
       */
      public Builder addAllStoredVersions(
          java.lang.Iterable<java.lang.String> values) {
        ensureStoredVersionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, storedVersions_);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStoredVersions() {
        storedVersions_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storedVersions lists all versions of CustomResources that were ever persisted. Tracking these
       * versions allows a migration path for stored versions in etcd. The field is mutable
       * so a migration controller can finish a migration to another version (ensuring
       * no old objects are left in storage), and then remove the rest of the
       * versions from this list.
       * Versions may not be removed from `spec.versions` while they exist in this list.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string storedVersions = 3;</code>
       * @param value The bytes of the storedVersions to add.
       * @return This builder for chaining.
       */
      public Builder addStoredVersionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureStoredVersionsIsMutable();
        storedVersions_.add(value);
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionStatus)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceDefinitionVersionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * name is the version name, e.g. “v1”, “v2beta1”, etc.
     * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * name is the version name, e.g. “v1”, “v2beta1”, etc.
     * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * name is the version name, e.g. “v1”, “v2beta1”, etc.
     * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * served is a flag enabling/disabling this version from being served via REST APIs
     * </pre>
     *
     * <code>optional bool served = 2;</code>
     * @return Whether the served field is set.
     */
    boolean hasServed();
    /**
     * <pre>
     * served is a flag enabling/disabling this version from being served via REST APIs
     * </pre>
     *
     * <code>optional bool served = 2;</code>
     * @return The served.
     */
    boolean getServed();

    /**
     * <pre>
     * storage indicates this version should be used when persisting custom resources to storage.
     * There must be exactly one version with storage=true.
     * </pre>
     *
     * <code>optional bool storage = 3;</code>
     * @return Whether the storage field is set.
     */
    boolean hasStorage();
    /**
     * <pre>
     * storage indicates this version should be used when persisting custom resources to storage.
     * There must be exactly one version with storage=true.
     * </pre>
     *
     * <code>optional bool storage = 3;</code>
     * @return The storage.
     */
    boolean getStorage();

    /**
     * <pre>
     * deprecated indicates this version of the custom resource API is deprecated.
     * When set to true, API requests to this version receive a warning header in the server response.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool deprecated = 7;</code>
     * @return Whether the deprecated field is set.
     */
    boolean hasDeprecated();
    /**
     * <pre>
     * deprecated indicates this version of the custom resource API is deprecated.
     * When set to true, API requests to this version receive a warning header in the server response.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool deprecated = 7;</code>
     * @return The deprecated.
     */
    boolean getDeprecated();

    /**
     * <pre>
     * deprecationWarning overrides the default warning returned to API clients.
     * May only be set when `deprecated` is true.
     * The default warning indicates this version is deprecated and recommends use
     * of the newest served version of equal or greater stability, if one exists.
     * +optional
     * </pre>
     *
     * <code>optional string deprecationWarning = 8;</code>
     * @return Whether the deprecationWarning field is set.
     */
    boolean hasDeprecationWarning();
    /**
     * <pre>
     * deprecationWarning overrides the default warning returned to API clients.
     * May only be set when `deprecated` is true.
     * The default warning indicates this version is deprecated and recommends use
     * of the newest served version of equal or greater stability, if one exists.
     * +optional
     * </pre>
     *
     * <code>optional string deprecationWarning = 8;</code>
     * @return The deprecationWarning.
     */
    java.lang.String getDeprecationWarning();
    /**
     * <pre>
     * deprecationWarning overrides the default warning returned to API clients.
     * May only be set when `deprecated` is true.
     * The default warning indicates this version is deprecated and recommends use
     * of the newest served version of equal or greater stability, if one exists.
     * +optional
     * </pre>
     *
     * <code>optional string deprecationWarning = 8;</code>
     * @return The bytes for deprecationWarning.
     */
    com.google.protobuf.ByteString
        getDeprecationWarningBytes();

    /**
     * <pre>
     * schema describes the schema used for validation and pruning of this version of the custom resource.
     * Top-level and per-version schemas are mutually exclusive.
     * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
     * @return Whether the schema field is set.
     */
    boolean hasSchema();
    /**
     * <pre>
     * schema describes the schema used for validation and pruning of this version of the custom resource.
     * Top-level and per-version schemas are mutually exclusive.
     * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
     * @return The schema.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getSchema();
    /**
     * <pre>
     * schema describes the schema used for validation and pruning of this version of the custom resource.
     * Top-level and per-version schemas are mutually exclusive.
     * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder getSchemaOrBuilder();

    /**
     * <pre>
     * subresources specify what subresources this version of the defined custom resource have.
     * Top-level and per-version subresources are mutually exclusive.
     * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
     * @return Whether the subresources field is set.
     */
    boolean hasSubresources();
    /**
     * <pre>
     * subresources specify what subresources this version of the defined custom resource have.
     * Top-level and per-version subresources are mutually exclusive.
     * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
     * @return The subresources.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getSubresources();
    /**
     * <pre>
     * subresources specify what subresources this version of the defined custom resource have.
     * Top-level and per-version subresources are mutually exclusive.
     * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder getSubresourcesOrBuilder();

    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> 
        getAdditionalPrinterColumnsList();
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getAdditionalPrinterColumns(int index);
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    int getAdditionalPrinterColumnsCount();
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
        getAdditionalPrinterColumnsOrBuilderList();
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder getAdditionalPrinterColumnsOrBuilder(
        int index);

    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> 
        getSelectableFieldsList();
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getSelectableFields(int index);
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    int getSelectableFieldsCount();
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
        getSelectableFieldsOrBuilderList();
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder getSelectableFieldsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * CustomResourceDefinitionVersion describes a version for CRD.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion}
   */
  public static final class CustomResourceDefinitionVersion extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion)
      CustomResourceDefinitionVersionOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceDefinitionVersion.class.getName());
    }
    // Use CustomResourceDefinitionVersion.newBuilder() to construct.
    private CustomResourceDefinitionVersion(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceDefinitionVersion() {
      name_ = "";
      deprecationWarning_ = "";
      additionalPrinterColumns_ = java.util.Collections.emptyList();
      selectableFields_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * name is the version name, e.g. “v1”, “v2beta1”, etc.
     * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * name is the version name, e.g. “v1”, “v2beta1”, etc.
     * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    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 version name, e.g. “v1”, “v2beta1”, etc.
     * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
     * </pre>
     *
     * <code>optional string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    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 SERVED_FIELD_NUMBER = 2;
    private boolean served_ = false;
    /**
     * <pre>
     * served is a flag enabling/disabling this version from being served via REST APIs
     * </pre>
     *
     * <code>optional bool served = 2;</code>
     * @return Whether the served field is set.
     */
    @java.lang.Override
    public boolean hasServed() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * served is a flag enabling/disabling this version from being served via REST APIs
     * </pre>
     *
     * <code>optional bool served = 2;</code>
     * @return The served.
     */
    @java.lang.Override
    public boolean getServed() {
      return served_;
    }

    public static final int STORAGE_FIELD_NUMBER = 3;
    private boolean storage_ = false;
    /**
     * <pre>
     * storage indicates this version should be used when persisting custom resources to storage.
     * There must be exactly one version with storage=true.
     * </pre>
     *
     * <code>optional bool storage = 3;</code>
     * @return Whether the storage field is set.
     */
    @java.lang.Override
    public boolean hasStorage() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * storage indicates this version should be used when persisting custom resources to storage.
     * There must be exactly one version with storage=true.
     * </pre>
     *
     * <code>optional bool storage = 3;</code>
     * @return The storage.
     */
    @java.lang.Override
    public boolean getStorage() {
      return storage_;
    }

    public static final int DEPRECATED_FIELD_NUMBER = 7;
    private boolean deprecated_ = false;
    /**
     * <pre>
     * deprecated indicates this version of the custom resource API is deprecated.
     * When set to true, API requests to this version receive a warning header in the server response.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool deprecated = 7;</code>
     * @return Whether the deprecated field is set.
     */
    @java.lang.Override
    public boolean hasDeprecated() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * deprecated indicates this version of the custom resource API is deprecated.
     * When set to true, API requests to this version receive a warning header in the server response.
     * Defaults to false.
     * +optional
     * </pre>
     *
     * <code>optional bool deprecated = 7;</code>
     * @return The deprecated.
     */
    @java.lang.Override
    public boolean getDeprecated() {
      return deprecated_;
    }

    public static final int DEPRECATIONWARNING_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object deprecationWarning_ = "";
    /**
     * <pre>
     * deprecationWarning overrides the default warning returned to API clients.
     * May only be set when `deprecated` is true.
     * The default warning indicates this version is deprecated and recommends use
     * of the newest served version of equal or greater stability, if one exists.
     * +optional
     * </pre>
     *
     * <code>optional string deprecationWarning = 8;</code>
     * @return Whether the deprecationWarning field is set.
     */
    @java.lang.Override
    public boolean hasDeprecationWarning() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * deprecationWarning overrides the default warning returned to API clients.
     * May only be set when `deprecated` is true.
     * The default warning indicates this version is deprecated and recommends use
     * of the newest served version of equal or greater stability, if one exists.
     * +optional
     * </pre>
     *
     * <code>optional string deprecationWarning = 8;</code>
     * @return The deprecationWarning.
     */
    @java.lang.Override
    public java.lang.String getDeprecationWarning() {
      java.lang.Object ref = deprecationWarning_;
      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()) {
          deprecationWarning_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * deprecationWarning overrides the default warning returned to API clients.
     * May only be set when `deprecated` is true.
     * The default warning indicates this version is deprecated and recommends use
     * of the newest served version of equal or greater stability, if one exists.
     * +optional
     * </pre>
     *
     * <code>optional string deprecationWarning = 8;</code>
     * @return The bytes for deprecationWarning.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDeprecationWarningBytes() {
      java.lang.Object ref = deprecationWarning_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        deprecationWarning_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SCHEMA_FIELD_NUMBER = 4;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation schema_;
    /**
     * <pre>
     * schema describes the schema used for validation and pruning of this version of the custom resource.
     * Top-level and per-version schemas are mutually exclusive.
     * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
     * @return Whether the schema field is set.
     */
    @java.lang.Override
    public boolean hasSchema() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * schema describes the schema used for validation and pruning of this version of the custom resource.
     * Top-level and per-version schemas are mutually exclusive.
     * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
     * @return The schema.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getSchema() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : schema_;
    }
    /**
     * <pre>
     * schema describes the schema used for validation and pruning of this version of the custom resource.
     * Top-level and per-version schemas are mutually exclusive.
     * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder getSchemaOrBuilder() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : schema_;
    }

    public static final int SUBRESOURCES_FIELD_NUMBER = 5;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources subresources_;
    /**
     * <pre>
     * subresources specify what subresources this version of the defined custom resource have.
     * Top-level and per-version subresources are mutually exclusive.
     * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
     * @return Whether the subresources field is set.
     */
    @java.lang.Override
    public boolean hasSubresources() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * subresources specify what subresources this version of the defined custom resource have.
     * Top-level and per-version subresources are mutually exclusive.
     * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
     * @return The subresources.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getSubresources() {
      return subresources_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
    }
    /**
     * <pre>
     * subresources specify what subresources this version of the defined custom resource have.
     * Top-level and per-version subresources are mutually exclusive.
     * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder getSubresourcesOrBuilder() {
      return subresources_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
    }

    public static final int ADDITIONALPRINTERCOLUMNS_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> additionalPrinterColumns_;
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> getAdditionalPrinterColumnsList() {
      return additionalPrinterColumns_;
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
        getAdditionalPrinterColumnsOrBuilderList() {
      return additionalPrinterColumns_;
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    @java.lang.Override
    public int getAdditionalPrinterColumnsCount() {
      return additionalPrinterColumns_.size();
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getAdditionalPrinterColumns(int index) {
      return additionalPrinterColumns_.get(index);
    }
    /**
     * <pre>
     * additionalPrinterColumns specifies additional columns returned in Table output.
     * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
     * Top-level and per-version columns are mutually exclusive.
     * Per-version columns must not all be set to identical values (top-level columns should be used instead).
     * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder getAdditionalPrinterColumnsOrBuilder(
        int index) {
      return additionalPrinterColumns_.get(index);
    }

    public static final int SELECTABLEFIELDS_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> selectableFields_;
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> getSelectableFieldsList() {
      return selectableFields_;
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
        getSelectableFieldsOrBuilderList() {
      return selectableFields_;
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    @java.lang.Override
    public int getSelectableFieldsCount() {
      return selectableFields_.size();
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getSelectableFields(int index) {
      return selectableFields_.get(index);
    }
    /**
     * <pre>
     * selectableFields specifies paths to fields that may be used as field selectors.
     * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
     *
     * +featureGate=CustomResourceFieldSelectors
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder getSelectableFieldsOrBuilder(
        int index) {
      return selectableFields_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, served_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, storage_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(4, getSchema());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(5, getSubresources());
      }
      for (int i = 0; i < additionalPrinterColumns_.size(); i++) {
        output.writeMessage(6, additionalPrinterColumns_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(7, deprecated_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 8, deprecationWarning_);
      }
      for (int i = 0; i < selectableFields_.size(); i++) {
        output.writeMessage(9, selectableFields_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, served_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, storage_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getSchema());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSubresources());
      }
      for (int i = 0; i < additionalPrinterColumns_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, additionalPrinterColumns_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, deprecated_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(8, deprecationWarning_);
      }
      for (int i = 0; i < selectableFields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, selectableFields_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasServed() != other.hasServed()) return false;
      if (hasServed()) {
        if (getServed()
            != other.getServed()) return false;
      }
      if (hasStorage() != other.hasStorage()) return false;
      if (hasStorage()) {
        if (getStorage()
            != other.getStorage()) return false;
      }
      if (hasDeprecated() != other.hasDeprecated()) return false;
      if (hasDeprecated()) {
        if (getDeprecated()
            != other.getDeprecated()) return false;
      }
      if (hasDeprecationWarning() != other.hasDeprecationWarning()) return false;
      if (hasDeprecationWarning()) {
        if (!getDeprecationWarning()
            .equals(other.getDeprecationWarning())) return false;
      }
      if (hasSchema() != other.hasSchema()) return false;
      if (hasSchema()) {
        if (!getSchema()
            .equals(other.getSchema())) return false;
      }
      if (hasSubresources() != other.hasSubresources()) return false;
      if (hasSubresources()) {
        if (!getSubresources()
            .equals(other.getSubresources())) return false;
      }
      if (!getAdditionalPrinterColumnsList()
          .equals(other.getAdditionalPrinterColumnsList())) return false;
      if (!getSelectableFieldsList()
          .equals(other.getSelectableFieldsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasServed()) {
        hash = (37 * hash) + SERVED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getServed());
      }
      if (hasStorage()) {
        hash = (37 * hash) + STORAGE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getStorage());
      }
      if (hasDeprecated()) {
        hash = (37 * hash) + DEPRECATED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getDeprecated());
      }
      if (hasDeprecationWarning()) {
        hash = (37 * hash) + DEPRECATIONWARNING_FIELD_NUMBER;
        hash = (53 * hash) + getDeprecationWarning().hashCode();
      }
      if (hasSchema()) {
        hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getSchema().hashCode();
      }
      if (hasSubresources()) {
        hash = (37 * hash) + SUBRESOURCES_FIELD_NUMBER;
        hash = (53 * hash) + getSubresources().hashCode();
      }
      if (getAdditionalPrinterColumnsCount() > 0) {
        hash = (37 * hash) + ADDITIONALPRINTERCOLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getAdditionalPrinterColumnsList().hashCode();
      }
      if (getSelectableFieldsCount() > 0) {
        hash = (37 * hash) + SELECTABLEFIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getSelectableFieldsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceDefinitionVersion describes a version for CRD.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSchemaFieldBuilder();
          getSubresourcesFieldBuilder();
          getAdditionalPrinterColumnsFieldBuilder();
          getSelectableFieldsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        served_ = false;
        storage_ = false;
        deprecated_ = false;
        deprecationWarning_ = "";
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        subresources_ = null;
        if (subresourcesBuilder_ != null) {
          subresourcesBuilder_.dispose();
          subresourcesBuilder_ = null;
        }
        if (additionalPrinterColumnsBuilder_ == null) {
          additionalPrinterColumns_ = java.util.Collections.emptyList();
        } else {
          additionalPrinterColumns_ = null;
          additionalPrinterColumnsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (selectableFieldsBuilder_ == null) {
          selectableFields_ = java.util.Collections.emptyList();
        } else {
          selectableFields_ = null;
          selectableFieldsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion result) {
        if (additionalPrinterColumnsBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            additionalPrinterColumns_ = java.util.Collections.unmodifiableList(additionalPrinterColumns_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.additionalPrinterColumns_ = additionalPrinterColumns_;
        } else {
          result.additionalPrinterColumns_ = additionalPrinterColumnsBuilder_.build();
        }
        if (selectableFieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            selectableFields_ = java.util.Collections.unmodifiableList(selectableFields_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.selectableFields_ = selectableFields_;
        } else {
          result.selectableFields_ = selectableFieldsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.served_ = served_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.storage_ = storage_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.deprecated_ = deprecated_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.deprecationWarning_ = deprecationWarning_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.schema_ = schemaBuilder_ == null
              ? schema_
              : schemaBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.subresources_ = subresourcesBuilder_ == null
              ? subresources_
              : subresourcesBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion.getDefaultInstance()) return this;
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasServed()) {
          setServed(other.getServed());
        }
        if (other.hasStorage()) {
          setStorage(other.getStorage());
        }
        if (other.hasDeprecated()) {
          setDeprecated(other.getDeprecated());
        }
        if (other.hasDeprecationWarning()) {
          deprecationWarning_ = other.deprecationWarning_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasSchema()) {
          mergeSchema(other.getSchema());
        }
        if (other.hasSubresources()) {
          mergeSubresources(other.getSubresources());
        }
        if (additionalPrinterColumnsBuilder_ == null) {
          if (!other.additionalPrinterColumns_.isEmpty()) {
            if (additionalPrinterColumns_.isEmpty()) {
              additionalPrinterColumns_ = other.additionalPrinterColumns_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureAdditionalPrinterColumnsIsMutable();
              additionalPrinterColumns_.addAll(other.additionalPrinterColumns_);
            }
            onChanged();
          }
        } else {
          if (!other.additionalPrinterColumns_.isEmpty()) {
            if (additionalPrinterColumnsBuilder_.isEmpty()) {
              additionalPrinterColumnsBuilder_.dispose();
              additionalPrinterColumnsBuilder_ = null;
              additionalPrinterColumns_ = other.additionalPrinterColumns_;
              bitField0_ = (bitField0_ & ~0x00000080);
              additionalPrinterColumnsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAdditionalPrinterColumnsFieldBuilder() : null;
            } else {
              additionalPrinterColumnsBuilder_.addAllMessages(other.additionalPrinterColumns_);
            }
          }
        }
        if (selectableFieldsBuilder_ == null) {
          if (!other.selectableFields_.isEmpty()) {
            if (selectableFields_.isEmpty()) {
              selectableFields_ = other.selectableFields_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureSelectableFieldsIsMutable();
              selectableFields_.addAll(other.selectableFields_);
            }
            onChanged();
          }
        } else {
          if (!other.selectableFields_.isEmpty()) {
            if (selectableFieldsBuilder_.isEmpty()) {
              selectableFieldsBuilder_.dispose();
              selectableFieldsBuilder_ = null;
              selectableFields_ = other.selectableFields_;
              bitField0_ = (bitField0_ & ~0x00000100);
              selectableFieldsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSelectableFieldsFieldBuilder() : null;
            } else {
              selectableFieldsBuilder_.addAllMessages(other.selectableFields_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                served_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                storage_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getSchemaFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getSubresourcesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 42
              case 50: {
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.parser(),
                        extensionRegistry);
                if (additionalPrinterColumnsBuilder_ == null) {
                  ensureAdditionalPrinterColumnsIsMutable();
                  additionalPrinterColumns_.add(m);
                } else {
                  additionalPrinterColumnsBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 56: {
                deprecated_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 56
              case 66: {
                deprecationWarning_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 66
              case 74: {
                io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.parser(),
                        extensionRegistry);
                if (selectableFieldsBuilder_ == null) {
                  ensureSelectableFieldsIsMutable();
                  selectableFields_.add(m);
                } else {
                  selectableFieldsBuilder_.addMessage(m);
                }
                break;
              } // case 74
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * name is the version name, e.g. “v1”, “v2beta1”, etc.
       * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * name is the version name, e.g. “v1”, “v2beta1”, etc.
       * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return The name.
       */
      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 version name, e.g. “v1”, “v2beta1”, etc.
       * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return The bytes for name.
       */
      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 version name, e.g. “v1”, “v2beta1”, etc.
       * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name is the version name, e.g. “v1”, “v2beta1”, etc.
       * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name is the version name, e.g. “v1”, “v2beta1”, etc.
       * The custom resources are served under this version at `/apis/&lt;group&gt;/&lt;version&gt;/...` if `served` is true.
       * </pre>
       *
       * <code>optional string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private boolean served_ ;
      /**
       * <pre>
       * served is a flag enabling/disabling this version from being served via REST APIs
       * </pre>
       *
       * <code>optional bool served = 2;</code>
       * @return Whether the served field is set.
       */
      @java.lang.Override
      public boolean hasServed() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * served is a flag enabling/disabling this version from being served via REST APIs
       * </pre>
       *
       * <code>optional bool served = 2;</code>
       * @return The served.
       */
      @java.lang.Override
      public boolean getServed() {
        return served_;
      }
      /**
       * <pre>
       * served is a flag enabling/disabling this version from being served via REST APIs
       * </pre>
       *
       * <code>optional bool served = 2;</code>
       * @param value The served to set.
       * @return This builder for chaining.
       */
      public Builder setServed(boolean value) {

        served_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * served is a flag enabling/disabling this version from being served via REST APIs
       * </pre>
       *
       * <code>optional bool served = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearServed() {
        bitField0_ = (bitField0_ & ~0x00000002);
        served_ = false;
        onChanged();
        return this;
      }

      private boolean storage_ ;
      /**
       * <pre>
       * storage indicates this version should be used when persisting custom resources to storage.
       * There must be exactly one version with storage=true.
       * </pre>
       *
       * <code>optional bool storage = 3;</code>
       * @return Whether the storage field is set.
       */
      @java.lang.Override
      public boolean hasStorage() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * storage indicates this version should be used when persisting custom resources to storage.
       * There must be exactly one version with storage=true.
       * </pre>
       *
       * <code>optional bool storage = 3;</code>
       * @return The storage.
       */
      @java.lang.Override
      public boolean getStorage() {
        return storage_;
      }
      /**
       * <pre>
       * storage indicates this version should be used when persisting custom resources to storage.
       * There must be exactly one version with storage=true.
       * </pre>
       *
       * <code>optional bool storage = 3;</code>
       * @param value The storage to set.
       * @return This builder for chaining.
       */
      public Builder setStorage(boolean value) {

        storage_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * storage indicates this version should be used when persisting custom resources to storage.
       * There must be exactly one version with storage=true.
       * </pre>
       *
       * <code>optional bool storage = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorage() {
        bitField0_ = (bitField0_ & ~0x00000004);
        storage_ = false;
        onChanged();
        return this;
      }

      private boolean deprecated_ ;
      /**
       * <pre>
       * deprecated indicates this version of the custom resource API is deprecated.
       * When set to true, API requests to this version receive a warning header in the server response.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool deprecated = 7;</code>
       * @return Whether the deprecated field is set.
       */
      @java.lang.Override
      public boolean hasDeprecated() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * deprecated indicates this version of the custom resource API is deprecated.
       * When set to true, API requests to this version receive a warning header in the server response.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool deprecated = 7;</code>
       * @return The deprecated.
       */
      @java.lang.Override
      public boolean getDeprecated() {
        return deprecated_;
      }
      /**
       * <pre>
       * deprecated indicates this version of the custom resource API is deprecated.
       * When set to true, API requests to this version receive a warning header in the server response.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool deprecated = 7;</code>
       * @param value The deprecated to set.
       * @return This builder for chaining.
       */
      public Builder setDeprecated(boolean value) {

        deprecated_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * deprecated indicates this version of the custom resource API is deprecated.
       * When set to true, API requests to this version receive a warning header in the server response.
       * Defaults to false.
       * +optional
       * </pre>
       *
       * <code>optional bool deprecated = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeprecated() {
        bitField0_ = (bitField0_ & ~0x00000008);
        deprecated_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object deprecationWarning_ = "";
      /**
       * <pre>
       * deprecationWarning overrides the default warning returned to API clients.
       * May only be set when `deprecated` is true.
       * The default warning indicates this version is deprecated and recommends use
       * of the newest served version of equal or greater stability, if one exists.
       * +optional
       * </pre>
       *
       * <code>optional string deprecationWarning = 8;</code>
       * @return Whether the deprecationWarning field is set.
       */
      public boolean hasDeprecationWarning() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * deprecationWarning overrides the default warning returned to API clients.
       * May only be set when `deprecated` is true.
       * The default warning indicates this version is deprecated and recommends use
       * of the newest served version of equal or greater stability, if one exists.
       * +optional
       * </pre>
       *
       * <code>optional string deprecationWarning = 8;</code>
       * @return The deprecationWarning.
       */
      public java.lang.String getDeprecationWarning() {
        java.lang.Object ref = deprecationWarning_;
        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()) {
            deprecationWarning_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * deprecationWarning overrides the default warning returned to API clients.
       * May only be set when `deprecated` is true.
       * The default warning indicates this version is deprecated and recommends use
       * of the newest served version of equal or greater stability, if one exists.
       * +optional
       * </pre>
       *
       * <code>optional string deprecationWarning = 8;</code>
       * @return The bytes for deprecationWarning.
       */
      public com.google.protobuf.ByteString
          getDeprecationWarningBytes() {
        java.lang.Object ref = deprecationWarning_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          deprecationWarning_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * deprecationWarning overrides the default warning returned to API clients.
       * May only be set when `deprecated` is true.
       * The default warning indicates this version is deprecated and recommends use
       * of the newest served version of equal or greater stability, if one exists.
       * +optional
       * </pre>
       *
       * <code>optional string deprecationWarning = 8;</code>
       * @param value The deprecationWarning to set.
       * @return This builder for chaining.
       */
      public Builder setDeprecationWarning(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        deprecationWarning_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * deprecationWarning overrides the default warning returned to API clients.
       * May only be set when `deprecated` is true.
       * The default warning indicates this version is deprecated and recommends use
       * of the newest served version of equal or greater stability, if one exists.
       * +optional
       * </pre>
       *
       * <code>optional string deprecationWarning = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearDeprecationWarning() {
        deprecationWarning_ = getDefaultInstance().getDeprecationWarning();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * deprecationWarning overrides the default warning returned to API clients.
       * May only be set when `deprecated` is true.
       * The default warning indicates this version is deprecated and recommends use
       * of the newest served version of equal or greater stability, if one exists.
       * +optional
       * </pre>
       *
       * <code>optional string deprecationWarning = 8;</code>
       * @param value The bytes for deprecationWarning to set.
       * @return This builder for chaining.
       */
      public Builder setDeprecationWarningBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        deprecationWarning_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation schema_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder> schemaBuilder_;
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       * @return Whether the schema field is set.
       */
      public boolean hasSchema() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       * @return The schema.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getSchema() {
        if (schemaBuilder_ == null) {
          return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : schema_;
        } else {
          return schemaBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       */
      public Builder setSchema(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation value) {
        if (schemaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          schema_ = value;
        } else {
          schemaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       */
      public Builder setSchema(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder builderForValue) {
        if (schemaBuilder_ == null) {
          schema_ = builderForValue.build();
        } else {
          schemaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       */
      public Builder mergeSchema(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation value) {
        if (schemaBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            schema_ != null &&
            schema_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance()) {
            getSchemaBuilder().mergeFrom(value);
          } else {
            schema_ = value;
          }
        } else {
          schemaBuilder_.mergeFrom(value);
        }
        if (schema_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       */
      public Builder clearSchema() {
        bitField0_ = (bitField0_ & ~0x00000020);
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder getSchemaBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getSchemaFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder getSchemaOrBuilder() {
        if (schemaBuilder_ != null) {
          return schemaBuilder_.getMessageOrBuilder();
        } else {
          return schema_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance() : schema_;
        }
      }
      /**
       * <pre>
       * schema describes the schema used for validation and pruning of this version of the custom resource.
       * Top-level and per-version schemas are mutually exclusive.
       * Per-version schemas must not all be set to identical values (top-level validation schema should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation schema = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder> 
          getSchemaFieldBuilder() {
        if (schemaBuilder_ == null) {
          schemaBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder>(
                  getSchema(),
                  getParentForChildren(),
                  isClean());
          schema_ = null;
        }
        return schemaBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources subresources_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder> subresourcesBuilder_;
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       * @return Whether the subresources field is set.
       */
      public boolean hasSubresources() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       * @return The subresources.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getSubresources() {
        if (subresourcesBuilder_ == null) {
          return subresources_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
        } else {
          return subresourcesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       */
      public Builder setSubresources(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources value) {
        if (subresourcesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          subresources_ = value;
        } else {
          subresourcesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       */
      public Builder setSubresources(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder builderForValue) {
        if (subresourcesBuilder_ == null) {
          subresources_ = builderForValue.build();
        } else {
          subresourcesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       */
      public Builder mergeSubresources(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources value) {
        if (subresourcesBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            subresources_ != null &&
            subresources_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance()) {
            getSubresourcesBuilder().mergeFrom(value);
          } else {
            subresources_ = value;
          }
        } else {
          subresourcesBuilder_.mergeFrom(value);
        }
        if (subresources_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       */
      public Builder clearSubresources() {
        bitField0_ = (bitField0_ & ~0x00000040);
        subresources_ = null;
        if (subresourcesBuilder_ != null) {
          subresourcesBuilder_.dispose();
          subresourcesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder getSubresourcesBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getSubresourcesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder getSubresourcesOrBuilder() {
        if (subresourcesBuilder_ != null) {
          return subresourcesBuilder_.getMessageOrBuilder();
        } else {
          return subresources_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance() : subresources_;
        }
      }
      /**
       * <pre>
       * subresources specify what subresources this version of the defined custom resource have.
       * Top-level and per-version subresources are mutually exclusive.
       * Per-version subresources must not all be set to identical values (top-level subresources should be used instead).
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources subresources = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder> 
          getSubresourcesFieldBuilder() {
        if (subresourcesBuilder_ == null) {
          subresourcesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder>(
                  getSubresources(),
                  getParentForChildren(),
                  isClean());
          subresources_ = null;
        }
        return subresourcesBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> additionalPrinterColumns_ =
        java.util.Collections.emptyList();
      private void ensureAdditionalPrinterColumnsIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          additionalPrinterColumns_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition>(additionalPrinterColumns_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> additionalPrinterColumnsBuilder_;

      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> getAdditionalPrinterColumnsList() {
        if (additionalPrinterColumnsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(additionalPrinterColumns_);
        } else {
          return additionalPrinterColumnsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public int getAdditionalPrinterColumnsCount() {
        if (additionalPrinterColumnsBuilder_ == null) {
          return additionalPrinterColumns_.size();
        } else {
          return additionalPrinterColumnsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition getAdditionalPrinterColumns(int index) {
        if (additionalPrinterColumnsBuilder_ == null) {
          return additionalPrinterColumns_.get(index);
        } else {
          return additionalPrinterColumnsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder setAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition value) {
        if (additionalPrinterColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.set(index, value);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder setAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder builderForValue) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.set(index, builderForValue.build());
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder addAdditionalPrinterColumns(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition value) {
        if (additionalPrinterColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(value);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder addAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition value) {
        if (additionalPrinterColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(index, value);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder addAdditionalPrinterColumns(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder builderForValue) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(builderForValue.build());
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder addAdditionalPrinterColumns(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder builderForValue) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.add(index, builderForValue.build());
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder addAllAdditionalPrinterColumns(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition> values) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, additionalPrinterColumns_);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder clearAdditionalPrinterColumns() {
        if (additionalPrinterColumnsBuilder_ == null) {
          additionalPrinterColumns_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public Builder removeAdditionalPrinterColumns(int index) {
        if (additionalPrinterColumnsBuilder_ == null) {
          ensureAdditionalPrinterColumnsIsMutable();
          additionalPrinterColumns_.remove(index);
          onChanged();
        } else {
          additionalPrinterColumnsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder getAdditionalPrinterColumnsBuilder(
          int index) {
        return getAdditionalPrinterColumnsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder getAdditionalPrinterColumnsOrBuilder(
          int index) {
        if (additionalPrinterColumnsBuilder_ == null) {
          return additionalPrinterColumns_.get(index);  } else {
          return additionalPrinterColumnsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
           getAdditionalPrinterColumnsOrBuilderList() {
        if (additionalPrinterColumnsBuilder_ != null) {
          return additionalPrinterColumnsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(additionalPrinterColumns_);
        }
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder addAdditionalPrinterColumnsBuilder() {
        return getAdditionalPrinterColumnsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder addAdditionalPrinterColumnsBuilder(
          int index) {
        return getAdditionalPrinterColumnsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.getDefaultInstance());
      }
      /**
       * <pre>
       * additionalPrinterColumns specifies additional columns returned in Table output.
       * See https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables for details.
       * Top-level and per-version columns are mutually exclusive.
       * Per-version columns must not all be set to identical values (top-level columns should be used instead).
       * If no top-level or per-version columns are specified, a single column displaying the age of the custom resource is used.
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceColumnDefinition additionalPrinterColumns = 6;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder> 
           getAdditionalPrinterColumnsBuilderList() {
        return getAdditionalPrinterColumnsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder> 
          getAdditionalPrinterColumnsFieldBuilder() {
        if (additionalPrinterColumnsBuilder_ == null) {
          additionalPrinterColumnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinition.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceColumnDefinitionOrBuilder>(
                  additionalPrinterColumns_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          additionalPrinterColumns_ = null;
        }
        return additionalPrinterColumnsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> selectableFields_ =
        java.util.Collections.emptyList();
      private void ensureSelectableFieldsIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          selectableFields_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField>(selectableFields_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> selectableFieldsBuilder_;

      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> getSelectableFieldsList() {
        if (selectableFieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(selectableFields_);
        } else {
          return selectableFieldsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public int getSelectableFieldsCount() {
        if (selectableFieldsBuilder_ == null) {
          return selectableFields_.size();
        } else {
          return selectableFieldsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getSelectableFields(int index) {
        if (selectableFieldsBuilder_ == null) {
          return selectableFields_.get(index);
        } else {
          return selectableFieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder setSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField value) {
        if (selectableFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectableFieldsIsMutable();
          selectableFields_.set(index, value);
          onChanged();
        } else {
          selectableFieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder setSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder builderForValue) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.set(index, builderForValue.build());
          onChanged();
        } else {
          selectableFieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder addSelectableFields(io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField value) {
        if (selectableFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(value);
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder addSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField value) {
        if (selectableFieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(index, value);
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder addSelectableFields(
          io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder builderForValue) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(builderForValue.build());
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder addSelectableFields(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder builderForValue) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.add(index, builderForValue.build());
          onChanged();
        } else {
          selectableFieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder addAllSelectableFields(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField> values) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, selectableFields_);
          onChanged();
        } else {
          selectableFieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder clearSelectableFields() {
        if (selectableFieldsBuilder_ == null) {
          selectableFields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          selectableFieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public Builder removeSelectableFields(int index) {
        if (selectableFieldsBuilder_ == null) {
          ensureSelectableFieldsIsMutable();
          selectableFields_.remove(index);
          onChanged();
        } else {
          selectableFieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder getSelectableFieldsBuilder(
          int index) {
        return getSelectableFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder getSelectableFieldsOrBuilder(
          int index) {
        if (selectableFieldsBuilder_ == null) {
          return selectableFields_.get(index);  } else {
          return selectableFieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
           getSelectableFieldsOrBuilderList() {
        if (selectableFieldsBuilder_ != null) {
          return selectableFieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(selectableFields_);
        }
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder addSelectableFieldsBuilder() {
        return getSelectableFieldsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.getDefaultInstance());
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder addSelectableFieldsBuilder(
          int index) {
        return getSelectableFieldsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.getDefaultInstance());
      }
      /**
       * <pre>
       * selectableFields specifies paths to fields that may be used as field selectors.
       * See https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors
       *
       * +featureGate=CustomResourceFieldSelectors
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField selectableFields = 9;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder> 
           getSelectableFieldsBuilderList() {
        return getSelectableFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder> 
          getSelectableFieldsFieldBuilder() {
        if (selectableFieldsBuilder_ == null) {
          selectableFieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder>(
                  selectableFields_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          selectableFields_ = null;
        }
        return selectableFieldsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceDefinitionVersion)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceDefinitionVersion getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceSubresourceScaleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.spec`.
     * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
     * </pre>
     *
     * <code>optional string specReplicasPath = 1;</code>
     * @return Whether the specReplicasPath field is set.
     */
    boolean hasSpecReplicasPath();
    /**
     * <pre>
     * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.spec`.
     * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
     * </pre>
     *
     * <code>optional string specReplicasPath = 1;</code>
     * @return The specReplicasPath.
     */
    java.lang.String getSpecReplicasPath();
    /**
     * <pre>
     * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.spec`.
     * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
     * </pre>
     *
     * <code>optional string specReplicasPath = 1;</code>
     * @return The bytes for specReplicasPath.
     */
    com.google.protobuf.ByteString
        getSpecReplicasPathBytes();

    /**
     * <pre>
     * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status`.
     * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
     * will default to 0.
     * </pre>
     *
     * <code>optional string statusReplicasPath = 2;</code>
     * @return Whether the statusReplicasPath field is set.
     */
    boolean hasStatusReplicasPath();
    /**
     * <pre>
     * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status`.
     * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
     * will default to 0.
     * </pre>
     *
     * <code>optional string statusReplicasPath = 2;</code>
     * @return The statusReplicasPath.
     */
    java.lang.String getStatusReplicasPath();
    /**
     * <pre>
     * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status`.
     * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
     * will default to 0.
     * </pre>
     *
     * <code>optional string statusReplicasPath = 2;</code>
     * @return The bytes for statusReplicasPath.
     */
    com.google.protobuf.ByteString
        getStatusReplicasPathBytes();

    /**
     * <pre>
     * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status` or `.spec`.
     * Must be set to work with HorizontalPodAutoscaler.
     * The field pointed by this JSON path must be a string field (not a complex selector struct)
     * which contains a serialized label selector in string form.
     * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
     * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
     * subresource will default to the empty string.
     * +optional
     * </pre>
     *
     * <code>optional string labelSelectorPath = 3;</code>
     * @return Whether the labelSelectorPath field is set.
     */
    boolean hasLabelSelectorPath();
    /**
     * <pre>
     * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status` or `.spec`.
     * Must be set to work with HorizontalPodAutoscaler.
     * The field pointed by this JSON path must be a string field (not a complex selector struct)
     * which contains a serialized label selector in string form.
     * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
     * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
     * subresource will default to the empty string.
     * +optional
     * </pre>
     *
     * <code>optional string labelSelectorPath = 3;</code>
     * @return The labelSelectorPath.
     */
    java.lang.String getLabelSelectorPath();
    /**
     * <pre>
     * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status` or `.spec`.
     * Must be set to work with HorizontalPodAutoscaler.
     * The field pointed by this JSON path must be a string field (not a complex selector struct)
     * which contains a serialized label selector in string form.
     * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
     * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
     * subresource will default to the empty string.
     * +optional
     * </pre>
     *
     * <code>optional string labelSelectorPath = 3;</code>
     * @return The bytes for labelSelectorPath.
     */
    com.google.protobuf.ByteString
        getLabelSelectorPathBytes();
  }
  /**
   * <pre>
   * CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale}
   */
  public static final class CustomResourceSubresourceScale extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale)
      CustomResourceSubresourceScaleOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceSubresourceScale.class.getName());
    }
    // Use CustomResourceSubresourceScale.newBuilder() to construct.
    private CustomResourceSubresourceScale(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceSubresourceScale() {
      specReplicasPath_ = "";
      statusReplicasPath_ = "";
      labelSelectorPath_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.Builder.class);
    }

    private int bitField0_;
    public static final int SPECREPLICASPATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object specReplicasPath_ = "";
    /**
     * <pre>
     * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.spec`.
     * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
     * </pre>
     *
     * <code>optional string specReplicasPath = 1;</code>
     * @return Whether the specReplicasPath field is set.
     */
    @java.lang.Override
    public boolean hasSpecReplicasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.spec`.
     * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
     * </pre>
     *
     * <code>optional string specReplicasPath = 1;</code>
     * @return The specReplicasPath.
     */
    @java.lang.Override
    public java.lang.String getSpecReplicasPath() {
      java.lang.Object ref = specReplicasPath_;
      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()) {
          specReplicasPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.spec`.
     * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
     * </pre>
     *
     * <code>optional string specReplicasPath = 1;</code>
     * @return The bytes for specReplicasPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSpecReplicasPathBytes() {
      java.lang.Object ref = specReplicasPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        specReplicasPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STATUSREPLICASPATH_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object statusReplicasPath_ = "";
    /**
     * <pre>
     * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status`.
     * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
     * will default to 0.
     * </pre>
     *
     * <code>optional string statusReplicasPath = 2;</code>
     * @return Whether the statusReplicasPath field is set.
     */
    @java.lang.Override
    public boolean hasStatusReplicasPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status`.
     * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
     * will default to 0.
     * </pre>
     *
     * <code>optional string statusReplicasPath = 2;</code>
     * @return The statusReplicasPath.
     */
    @java.lang.Override
    public java.lang.String getStatusReplicasPath() {
      java.lang.Object ref = statusReplicasPath_;
      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()) {
          statusReplicasPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status`.
     * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
     * will default to 0.
     * </pre>
     *
     * <code>optional string statusReplicasPath = 2;</code>
     * @return The bytes for statusReplicasPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStatusReplicasPathBytes() {
      java.lang.Object ref = statusReplicasPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        statusReplicasPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LABELSELECTORPATH_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object labelSelectorPath_ = "";
    /**
     * <pre>
     * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status` or `.spec`.
     * Must be set to work with HorizontalPodAutoscaler.
     * The field pointed by this JSON path must be a string field (not a complex selector struct)
     * which contains a serialized label selector in string form.
     * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
     * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
     * subresource will default to the empty string.
     * +optional
     * </pre>
     *
     * <code>optional string labelSelectorPath = 3;</code>
     * @return Whether the labelSelectorPath field is set.
     */
    @java.lang.Override
    public boolean hasLabelSelectorPath() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status` or `.spec`.
     * Must be set to work with HorizontalPodAutoscaler.
     * The field pointed by this JSON path must be a string field (not a complex selector struct)
     * which contains a serialized label selector in string form.
     * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
     * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
     * subresource will default to the empty string.
     * +optional
     * </pre>
     *
     * <code>optional string labelSelectorPath = 3;</code>
     * @return The labelSelectorPath.
     */
    @java.lang.Override
    public java.lang.String getLabelSelectorPath() {
      java.lang.Object ref = labelSelectorPath_;
      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()) {
          labelSelectorPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
     * Only JSON paths without the array notation are allowed.
     * Must be a JSON Path under `.status` or `.spec`.
     * Must be set to work with HorizontalPodAutoscaler.
     * The field pointed by this JSON path must be a string field (not a complex selector struct)
     * which contains a serialized label selector in string form.
     * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
     * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
     * subresource will default to the empty string.
     * +optional
     * </pre>
     *
     * <code>optional string labelSelectorPath = 3;</code>
     * @return The bytes for labelSelectorPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLabelSelectorPathBytes() {
      java.lang.Object ref = labelSelectorPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        labelSelectorPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, specReplicasPath_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, statusReplicasPath_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, labelSelectorPath_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, specReplicasPath_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, statusReplicasPath_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, labelSelectorPath_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasSpecReplicasPath() != other.hasSpecReplicasPath()) return false;
      if (hasSpecReplicasPath()) {
        if (!getSpecReplicasPath()
            .equals(other.getSpecReplicasPath())) return false;
      }
      if (hasStatusReplicasPath() != other.hasStatusReplicasPath()) return false;
      if (hasStatusReplicasPath()) {
        if (!getStatusReplicasPath()
            .equals(other.getStatusReplicasPath())) return false;
      }
      if (hasLabelSelectorPath() != other.hasLabelSelectorPath()) return false;
      if (hasLabelSelectorPath()) {
        if (!getLabelSelectorPath()
            .equals(other.getLabelSelectorPath())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSpecReplicasPath()) {
        hash = (37 * hash) + SPECREPLICASPATH_FIELD_NUMBER;
        hash = (53 * hash) + getSpecReplicasPath().hashCode();
      }
      if (hasStatusReplicasPath()) {
        hash = (37 * hash) + STATUSREPLICASPATH_FIELD_NUMBER;
        hash = (53 * hash) + getStatusReplicasPath().hashCode();
      }
      if (hasLabelSelectorPath()) {
        hash = (37 * hash) + LABELSELECTORPATH_FIELD_NUMBER;
        hash = (53 * hash) + getLabelSelectorPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceSubresourceScale defines how to serve the scale subresource for CustomResources.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScaleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.specReplicasPath_ = specReplicasPath_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.statusReplicasPath_ = statusReplicasPath_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.labelSelectorPath_ = labelSelectorPath_;
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.getDefaultInstance()) return this;
        if (other.hasSpecReplicasPath()) {
          specReplicasPath_ = other.specReplicasPath_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasStatusReplicasPath()) {
          statusReplicasPath_ = other.statusReplicasPath_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasLabelSelectorPath()) {
          labelSelectorPath_ = other.labelSelectorPath_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object specReplicasPath_ = "";
      /**
       * <pre>
       * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.spec`.
       * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
       * </pre>
       *
       * <code>optional string specReplicasPath = 1;</code>
       * @return Whether the specReplicasPath field is set.
       */
      public boolean hasSpecReplicasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.spec`.
       * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
       * </pre>
       *
       * <code>optional string specReplicasPath = 1;</code>
       * @return The specReplicasPath.
       */
      public java.lang.String getSpecReplicasPath() {
        java.lang.Object ref = specReplicasPath_;
        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()) {
            specReplicasPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.spec`.
       * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
       * </pre>
       *
       * <code>optional string specReplicasPath = 1;</code>
       * @return The bytes for specReplicasPath.
       */
      public com.google.protobuf.ByteString
          getSpecReplicasPathBytes() {
        java.lang.Object ref = specReplicasPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          specReplicasPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.spec`.
       * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
       * </pre>
       *
       * <code>optional string specReplicasPath = 1;</code>
       * @param value The specReplicasPath to set.
       * @return This builder for chaining.
       */
      public Builder setSpecReplicasPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        specReplicasPath_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.spec`.
       * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
       * </pre>
       *
       * <code>optional string specReplicasPath = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpecReplicasPath() {
        specReplicasPath_ = getDefaultInstance().getSpecReplicasPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * specReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `spec.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.spec`.
       * If there is no value under the given path in the custom resource, the `/scale` subresource will return an error on GET.
       * </pre>
       *
       * <code>optional string specReplicasPath = 1;</code>
       * @param value The bytes for specReplicasPath to set.
       * @return This builder for chaining.
       */
      public Builder setSpecReplicasPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        specReplicasPath_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object statusReplicasPath_ = "";
      /**
       * <pre>
       * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status`.
       * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
       * will default to 0.
       * </pre>
       *
       * <code>optional string statusReplicasPath = 2;</code>
       * @return Whether the statusReplicasPath field is set.
       */
      public boolean hasStatusReplicasPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status`.
       * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
       * will default to 0.
       * </pre>
       *
       * <code>optional string statusReplicasPath = 2;</code>
       * @return The statusReplicasPath.
       */
      public java.lang.String getStatusReplicasPath() {
        java.lang.Object ref = statusReplicasPath_;
        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()) {
            statusReplicasPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status`.
       * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
       * will default to 0.
       * </pre>
       *
       * <code>optional string statusReplicasPath = 2;</code>
       * @return The bytes for statusReplicasPath.
       */
      public com.google.protobuf.ByteString
          getStatusReplicasPathBytes() {
        java.lang.Object ref = statusReplicasPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          statusReplicasPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status`.
       * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
       * will default to 0.
       * </pre>
       *
       * <code>optional string statusReplicasPath = 2;</code>
       * @param value The statusReplicasPath to set.
       * @return This builder for chaining.
       */
      public Builder setStatusReplicasPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        statusReplicasPath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status`.
       * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
       * will default to 0.
       * </pre>
       *
       * <code>optional string statusReplicasPath = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatusReplicasPath() {
        statusReplicasPath_ = getDefaultInstance().getStatusReplicasPath();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * statusReplicasPath defines the JSON path inside of a custom resource that corresponds to Scale `status.replicas`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status`.
       * If there is no value under the given path in the custom resource, the `status.replicas` value in the `/scale` subresource
       * will default to 0.
       * </pre>
       *
       * <code>optional string statusReplicasPath = 2;</code>
       * @param value The bytes for statusReplicasPath to set.
       * @return This builder for chaining.
       */
      public Builder setStatusReplicasPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        statusReplicasPath_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object labelSelectorPath_ = "";
      /**
       * <pre>
       * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status` or `.spec`.
       * Must be set to work with HorizontalPodAutoscaler.
       * The field pointed by this JSON path must be a string field (not a complex selector struct)
       * which contains a serialized label selector in string form.
       * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
       * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
       * subresource will default to the empty string.
       * +optional
       * </pre>
       *
       * <code>optional string labelSelectorPath = 3;</code>
       * @return Whether the labelSelectorPath field is set.
       */
      public boolean hasLabelSelectorPath() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status` or `.spec`.
       * Must be set to work with HorizontalPodAutoscaler.
       * The field pointed by this JSON path must be a string field (not a complex selector struct)
       * which contains a serialized label selector in string form.
       * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
       * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
       * subresource will default to the empty string.
       * +optional
       * </pre>
       *
       * <code>optional string labelSelectorPath = 3;</code>
       * @return The labelSelectorPath.
       */
      public java.lang.String getLabelSelectorPath() {
        java.lang.Object ref = labelSelectorPath_;
        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()) {
            labelSelectorPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status` or `.spec`.
       * Must be set to work with HorizontalPodAutoscaler.
       * The field pointed by this JSON path must be a string field (not a complex selector struct)
       * which contains a serialized label selector in string form.
       * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
       * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
       * subresource will default to the empty string.
       * +optional
       * </pre>
       *
       * <code>optional string labelSelectorPath = 3;</code>
       * @return The bytes for labelSelectorPath.
       */
      public com.google.protobuf.ByteString
          getLabelSelectorPathBytes() {
        java.lang.Object ref = labelSelectorPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          labelSelectorPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status` or `.spec`.
       * Must be set to work with HorizontalPodAutoscaler.
       * The field pointed by this JSON path must be a string field (not a complex selector struct)
       * which contains a serialized label selector in string form.
       * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
       * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
       * subresource will default to the empty string.
       * +optional
       * </pre>
       *
       * <code>optional string labelSelectorPath = 3;</code>
       * @param value The labelSelectorPath to set.
       * @return This builder for chaining.
       */
      public Builder setLabelSelectorPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        labelSelectorPath_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status` or `.spec`.
       * Must be set to work with HorizontalPodAutoscaler.
       * The field pointed by this JSON path must be a string field (not a complex selector struct)
       * which contains a serialized label selector in string form.
       * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
       * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
       * subresource will default to the empty string.
       * +optional
       * </pre>
       *
       * <code>optional string labelSelectorPath = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLabelSelectorPath() {
        labelSelectorPath_ = getDefaultInstance().getLabelSelectorPath();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * labelSelectorPath defines the JSON path inside of a custom resource that corresponds to Scale `status.selector`.
       * Only JSON paths without the array notation are allowed.
       * Must be a JSON Path under `.status` or `.spec`.
       * Must be set to work with HorizontalPodAutoscaler.
       * The field pointed by this JSON path must be a string field (not a complex selector struct)
       * which contains a serialized label selector in string form.
       * More info: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource
       * If there is no value under the given path in the custom resource, the `status.selector` value in the `/scale`
       * subresource will default to the empty string.
       * +optional
       * </pre>
       *
       * <code>optional string labelSelectorPath = 3;</code>
       * @param value The bytes for labelSelectorPath to set.
       * @return This builder for chaining.
       */
      public Builder setLabelSelectorPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        labelSelectorPath_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceSubresourceStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources.
   * Status is represented by the `.status` JSON path inside of a CustomResource. When set,
   * * exposes a /status subresource for the custom resource
   * * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza
   * * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus}
   */
  public static final class CustomResourceSubresourceStatus extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus)
      CustomResourceSubresourceStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceSubresourceStatus.class.getName());
    }
    // Use CustomResourceSubresourceStatus.newBuilder() to construct.
    private CustomResourceSubresourceStatus(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceSubresourceStatus() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.Builder.class);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

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

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

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

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources.
     * Status is represented by the `.status` JSON path inside of a CustomResource. When set,
     * * exposes a /status subresource for the custom resource
     * * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza
     * * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceSubresourcesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * status indicates the custom resource should serve a `/status` subresource.
     * When enabled:
     * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
     * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
     * @return Whether the status field is set.
     */
    boolean hasStatus();
    /**
     * <pre>
     * status indicates the custom resource should serve a `/status` subresource.
     * When enabled:
     * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
     * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
     * @return The status.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus getStatus();
    /**
     * <pre>
     * status indicates the custom resource should serve a `/status` subresource.
     * When enabled:
     * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
     * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatusOrBuilder getStatusOrBuilder();

    /**
     * <pre>
     * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
     * @return Whether the scale field is set.
     */
    boolean hasScale();
    /**
     * <pre>
     * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
     * @return The scale.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale getScale();
    /**
     * <pre>
     * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScaleOrBuilder getScaleOrBuilder();
  }
  /**
   * <pre>
   * CustomResourceSubresources defines the status and scale subresources for CustomResources.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources}
   */
  public static final class CustomResourceSubresources extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources)
      CustomResourceSubresourcesOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceSubresources.class.getName());
    }
    // Use CustomResourceSubresources.newBuilder() to construct.
    private CustomResourceSubresources(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceSubresources() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder.class);
    }

    private int bitField0_;
    public static final int STATUS_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus status_;
    /**
     * <pre>
     * status indicates the custom resource should serve a `/status` subresource.
     * When enabled:
     * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
     * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
     * @return Whether the status field is set.
     */
    @java.lang.Override
    public boolean hasStatus() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * status indicates the custom resource should serve a `/status` subresource.
     * When enabled:
     * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
     * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
     * @return The status.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus getStatus() {
      return status_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.getDefaultInstance() : status_;
    }
    /**
     * <pre>
     * status indicates the custom resource should serve a `/status` subresource.
     * When enabled:
     * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
     * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatusOrBuilder getStatusOrBuilder() {
      return status_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.getDefaultInstance() : status_;
    }

    public static final int SCALE_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale scale_;
    /**
     * <pre>
     * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
     * @return Whether the scale field is set.
     */
    @java.lang.Override
    public boolean hasScale() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
     * @return The scale.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale getScale() {
      return scale_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.getDefaultInstance() : scale_;
    }
    /**
     * <pre>
     * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScaleOrBuilder getScaleOrBuilder() {
      return scale_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.getDefaultInstance() : scale_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getStatus());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getScale());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStatus());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getScale());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasStatus() != other.hasStatus()) return false;
      if (hasStatus()) {
        if (!getStatus()
            .equals(other.getStatus())) return false;
      }
      if (hasScale() != other.hasScale()) return false;
      if (hasScale()) {
        if (!getScale()
            .equals(other.getScale())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      if (hasScale()) {
        hash = (37 * hash) + SCALE_FIELD_NUMBER;
        hash = (53 * hash) + getScale().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceSubresources defines the status and scale subresources for CustomResources.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourcesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getStatusFieldBuilder();
          getScaleFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        scale_ = null;
        if (scaleBuilder_ != null) {
          scaleBuilder_.dispose();
          scaleBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.status_ = statusBuilder_ == null
              ? status_
              : statusBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.scale_ = scaleBuilder_ == null
              ? scale_
              : scaleBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources.getDefaultInstance()) return this;
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        if (other.hasScale()) {
          mergeScale(other.getScale());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus status_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatusOrBuilder> statusBuilder_;
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       * @return Whether the status field is set.
       */
      public boolean hasStatus() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       * @return The status.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       */
      public Builder setStatus(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
        } else {
          statusBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       */
      public Builder setStatus(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       */
      public Builder mergeStatus(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus value) {
        if (statusBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            status_ != null &&
            status_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.getDefaultInstance()) {
            getStatusBuilder().mergeFrom(value);
          } else {
            status_ = value;
          }
        } else {
          statusBuilder_.mergeFrom(value);
        }
        if (status_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000001);
        status_ = null;
        if (statusBuilder_ != null) {
          statusBuilder_.dispose();
          statusBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.Builder getStatusBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.getDefaultInstance() : status_;
        }
      }
      /**
       * <pre>
       * status indicates the custom resource should serve a `/status` subresource.
       * When enabled:
       * 1. requests to the custom resource primary endpoint ignore changes to the `status` stanza of the object.
       * 2. requests to the custom resource `/status` subresource ignore changes to anything other than the `status` stanza of the object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceStatus status = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatus.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceStatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale scale_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScaleOrBuilder> scaleBuilder_;
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       * @return Whether the scale field is set.
       */
      public boolean hasScale() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       * @return The scale.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale getScale() {
        if (scaleBuilder_ == null) {
          return scale_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.getDefaultInstance() : scale_;
        } else {
          return scaleBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       */
      public Builder setScale(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale value) {
        if (scaleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scale_ = value;
        } else {
          scaleBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       */
      public Builder setScale(
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.Builder builderForValue) {
        if (scaleBuilder_ == null) {
          scale_ = builderForValue.build();
        } else {
          scaleBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       */
      public Builder mergeScale(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale value) {
        if (scaleBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            scale_ != null &&
            scale_ != io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.getDefaultInstance()) {
            getScaleBuilder().mergeFrom(value);
          } else {
            scale_ = value;
          }
        } else {
          scaleBuilder_.mergeFrom(value);
        }
        if (scale_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       */
      public Builder clearScale() {
        bitField0_ = (bitField0_ & ~0x00000002);
        scale_ = null;
        if (scaleBuilder_ != null) {
          scaleBuilder_.dispose();
          scaleBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.Builder getScaleBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getScaleFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScaleOrBuilder getScaleOrBuilder() {
        if (scaleBuilder_ != null) {
          return scaleBuilder_.getMessageOrBuilder();
        } else {
          return scale_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.getDefaultInstance() : scale_;
        }
      }
      /**
       * <pre>
       * scale indicates the custom resource should serve a `/scale` subresource that returns an `autoscaling/v1` Scale object.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresourceScale scale = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScaleOrBuilder> 
          getScaleFieldBuilder() {
        if (scaleBuilder_ == null) {
          scaleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScale.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresourceScaleOrBuilder>(
                  getScale(),
                  getParentForChildren(),
                  isClean());
          scale_ = null;
        }
        return scaleBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceSubresources)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceSubresources getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CustomResourceValidationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
     * @return Whether the openAPIV3Schema field is set.
     */
    boolean hasOpenAPIV3Schema();
    /**
     * <pre>
     * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
     * @return The openAPIV3Schema.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getOpenAPIV3Schema();
    /**
     * <pre>
     * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getOpenAPIV3SchemaOrBuilder();
  }
  /**
   * <pre>
   * CustomResourceValidation is a list of validation methods for CustomResources.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation}
   */
  public static final class CustomResourceValidation extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation)
      CustomResourceValidationOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        CustomResourceValidation.class.getName());
    }
    // Use CustomResourceValidation.newBuilder() to construct.
    private CustomResourceValidation(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private CustomResourceValidation() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder.class);
    }

    private int bitField0_;
    public static final int OPENAPIV3SCHEMA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps openAPIV3Schema_;
    /**
     * <pre>
     * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
     * @return Whether the openAPIV3Schema field is set.
     */
    @java.lang.Override
    public boolean hasOpenAPIV3Schema() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
     * @return The openAPIV3Schema.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getOpenAPIV3Schema() {
      return openAPIV3Schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : openAPIV3Schema_;
    }
    /**
     * <pre>
     * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getOpenAPIV3SchemaOrBuilder() {
      return openAPIV3Schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : openAPIV3Schema_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getOpenAPIV3Schema());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getOpenAPIV3Schema());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasOpenAPIV3Schema() != other.hasOpenAPIV3Schema()) return false;
      if (hasOpenAPIV3Schema()) {
        if (!getOpenAPIV3Schema()
            .equals(other.getOpenAPIV3Schema())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CustomResourceValidation is a list of validation methods for CustomResources.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation)
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.class, io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getOpenAPIV3SchemaFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        openAPIV3Schema_ = null;
        if (openAPIV3SchemaBuilder_ != null) {
          openAPIV3SchemaBuilder_.dispose();
          openAPIV3SchemaBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation result = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.openAPIV3Schema_ = openAPIV3SchemaBuilder_ == null
              ? openAPIV3Schema_
              : openAPIV3SchemaBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation.getDefaultInstance()) return this;
        if (other.hasOpenAPIV3Schema()) {
          mergeOpenAPIV3Schema(other.getOpenAPIV3Schema());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps openAPIV3Schema_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> openAPIV3SchemaBuilder_;
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       * @return Whether the openAPIV3Schema field is set.
       */
      public boolean hasOpenAPIV3Schema() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       * @return The openAPIV3Schema.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getOpenAPIV3Schema() {
        if (openAPIV3SchemaBuilder_ == null) {
          return openAPIV3Schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : openAPIV3Schema_;
        } else {
          return openAPIV3SchemaBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       */
      public Builder setOpenAPIV3Schema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (openAPIV3SchemaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          openAPIV3Schema_ = value;
        } else {
          openAPIV3SchemaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       */
      public Builder setOpenAPIV3Schema(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (openAPIV3SchemaBuilder_ == null) {
          openAPIV3Schema_ = builderForValue.build();
        } else {
          openAPIV3SchemaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       */
      public Builder mergeOpenAPIV3Schema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (openAPIV3SchemaBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            openAPIV3Schema_ != null &&
            openAPIV3Schema_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance()) {
            getOpenAPIV3SchemaBuilder().mergeFrom(value);
          } else {
            openAPIV3Schema_ = value;
          }
        } else {
          openAPIV3SchemaBuilder_.mergeFrom(value);
        }
        if (openAPIV3Schema_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       */
      public Builder clearOpenAPIV3Schema() {
        bitField0_ = (bitField0_ & ~0x00000001);
        openAPIV3Schema_ = null;
        if (openAPIV3SchemaBuilder_ != null) {
          openAPIV3SchemaBuilder_.dispose();
          openAPIV3SchemaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getOpenAPIV3SchemaBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getOpenAPIV3SchemaFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getOpenAPIV3SchemaOrBuilder() {
        if (openAPIV3SchemaBuilder_ != null) {
          return openAPIV3SchemaBuilder_.getMessageOrBuilder();
        } else {
          return openAPIV3Schema_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : openAPIV3Schema_;
        }
      }
      /**
       * <pre>
       * openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps openAPIV3Schema = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getOpenAPIV3SchemaFieldBuilder() {
        if (openAPIV3SchemaBuilder_ == null) {
          openAPIV3SchemaBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  getOpenAPIV3Schema(),
                  getParentForChildren(),
                  isClean());
          openAPIV3Schema_ = null;
        }
        return openAPIV3SchemaBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.CustomResourceValidation)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.CustomResourceValidation getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExternalDocumentationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string description = 1;</code>
     * @return Whether the description field is set.
     */
    boolean hasDescription();
    /**
     * <code>optional string description = 1;</code>
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * <code>optional string description = 1;</code>
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * <code>optional string url = 2;</code>
     * @return Whether the url field is set.
     */
    boolean hasUrl();
    /**
     * <code>optional string url = 2;</code>
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     * <code>optional string url = 2;</code>
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString
        getUrlBytes();
  }
  /**
   * <pre>
   * ExternalDocumentation allows referencing an external resource for extended documentation.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation}
   */
  public static final class ExternalDocumentation extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation)
      ExternalDocumentationOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        ExternalDocumentation.class.getName());
    }
    // Use ExternalDocumentation.newBuilder() to construct.
    private ExternalDocumentation(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ExternalDocumentation() {
      description_ = "";
      url_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.class, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.Builder.class);
    }

    private int bitField0_;
    public static final int DESCRIPTION_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * <code>optional string description = 1;</code>
     * @return Whether the description field is set.
     */
    @java.lang.Override
    public boolean hasDescription() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string description = 1;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          description_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string description = 1;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int URL_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object url_ = "";
    /**
     * <code>optional string url = 2;</code>
     * @return Whether the url field is set.
     */
    @java.lang.Override
    public boolean hasUrl() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string url = 2;</code>
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      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()) {
          url_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string url = 2;</code>
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, description_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, url_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, description_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, url_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasDescription() != other.hasDescription()) return false;
      if (hasDescription()) {
        if (!getDescription()
            .equals(other.getDescription())) return false;
      }
      if (hasUrl() != other.hasUrl()) return false;
      if (hasUrl()) {
        if (!getUrl()
            .equals(other.getUrl())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDescription()) {
        hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
        hash = (53 * hash) + getDescription().hashCode();
      }
      if (hasUrl()) {
        hash = (37 * hash) + URL_FIELD_NUMBER;
        hash = (53 * hash) + getUrl().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ExternalDocumentation allows referencing an external resource for extended documentation.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation)
        io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.class, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation result = new io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.description_ = description_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.url_ = url_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.getDefaultInstance()) return this;
        if (other.hasDescription()) {
          description_ = other.description_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasUrl()) {
          url_ = other.url_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object description_ = "";
      /**
       * <code>optional string description = 1;</code>
       * @return Whether the description field is set.
       */
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string description = 1;</code>
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            description_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string description = 1;</code>
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string description = 1;</code>
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional string description = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>optional string description = 1;</code>
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object url_ = "";
      /**
       * <code>optional string url = 2;</code>
       * @return Whether the url field is set.
       */
      public boolean hasUrl() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string url = 2;</code>
       * @return The url.
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        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()) {
            url_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string url = 2;</code>
       * @return The bytes for url.
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string url = 2;</code>
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        url_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional string url = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        url_ = getDefaultInstance().getUrl();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>optional string url = 2;</code>
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        url_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JSONOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional bytes raw = 1;</code>
     * @return Whether the raw field is set.
     */
    boolean hasRaw();
    /**
     * <code>optional bytes raw = 1;</code>
     * @return The raw.
     */
    com.google.protobuf.ByteString getRaw();
  }
  /**
   * <pre>
   * JSON represents any valid JSON value.
   * These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON}
   */
  public static final class JSON extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON)
      JSONOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        JSON.class.getName());
    }
    // Use JSON.newBuilder() to construct.
    private JSON(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private JSON() {
      raw_ = com.google.protobuf.ByteString.EMPTY;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.JSON.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder.class);
    }

    private int bitField0_;
    public static final int RAW_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString raw_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes raw = 1;</code>
     * @return Whether the raw field is set.
     */
    @java.lang.Override
    public boolean hasRaw() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional bytes raw = 1;</code>
     * @return The raw.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getRaw() {
      return raw_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(1, raw_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, raw_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasRaw() != other.hasRaw()) return false;
      if (hasRaw()) {
        if (!getRaw()
            .equals(other.getRaw())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSON parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSON parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSON parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSON parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.JSON prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * JSON represents any valid JSON value.
     * These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON)
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.JSON.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.JSON.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        raw_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSON result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSON result = new io.kubernetes.client.proto.V1beta1Apiextensions.JSON(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.JSON result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.raw_ = raw_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSON) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.JSON)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.JSON other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance()) return this;
        if (other.hasRaw()) {
          setRaw(other.getRaw());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.ByteString raw_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes raw = 1;</code>
       * @return Whether the raw field is set.
       */
      @java.lang.Override
      public boolean hasRaw() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional bytes raw = 1;</code>
       * @return The raw.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getRaw() {
        return raw_;
      }
      /**
       * <code>optional bytes raw = 1;</code>
       * @param value The raw to set.
       * @return This builder for chaining.
       */
      public Builder setRaw(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        raw_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes raw = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRaw() {
        bitField0_ = (bitField0_ & ~0x00000001);
        raw_ = getDefaultInstance().getRaw();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.JSON DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.JSON();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSON getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JSONSchemaPropsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string id = 1;</code>
     * @return Whether the id field is set.
     */
    boolean hasId();
    /**
     * <code>optional string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <code>optional string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <code>optional string schema = 2;</code>
     * @return Whether the schema field is set.
     */
    boolean hasSchema();
    /**
     * <code>optional string schema = 2;</code>
     * @return The schema.
     */
    java.lang.String getSchema();
    /**
     * <code>optional string schema = 2;</code>
     * @return The bytes for schema.
     */
    com.google.protobuf.ByteString
        getSchemaBytes();

    /**
     * <code>optional string ref = 3;</code>
     * @return Whether the ref field is set.
     */
    boolean hasRef();
    /**
     * <code>optional string ref = 3;</code>
     * @return The ref.
     */
    java.lang.String getRef();
    /**
     * <code>optional string ref = 3;</code>
     * @return The bytes for ref.
     */
    com.google.protobuf.ByteString
        getRefBytes();

    /**
     * <code>optional string description = 4;</code>
     * @return Whether the description field is set.
     */
    boolean hasDescription();
    /**
     * <code>optional string description = 4;</code>
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * <code>optional string description = 4;</code>
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * <code>optional string type = 5;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>optional string type = 5;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <code>optional string type = 5;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
     *
     * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
     * - uri: an URI as parsed by Golang net/url.ParseRequestURI
     * - email: an email address as parsed by Golang net/mail.ParseAddress
     * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
     * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
     * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
     * - cidr: a CIDR as parsed by Golang net.ParseCIDR
     * - mac: a MAC address as parsed by Golang net.ParseMAC
     * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
     * - isbn10: an ISBN10 number string like "0321751043"
     * - isbn13: an ISBN13 number string like "978-0321751041"
     * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
     * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
     * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
     * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
     * - byte: base64 encoded binary data
     * - password: any kind of string
     * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
     * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
     * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
     * </pre>
     *
     * <code>optional string format = 6;</code>
     * @return Whether the format field is set.
     */
    boolean hasFormat();
    /**
     * <pre>
     * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
     *
     * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
     * - uri: an URI as parsed by Golang net/url.ParseRequestURI
     * - email: an email address as parsed by Golang net/mail.ParseAddress
     * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
     * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
     * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
     * - cidr: a CIDR as parsed by Golang net.ParseCIDR
     * - mac: a MAC address as parsed by Golang net.ParseMAC
     * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
     * - isbn10: an ISBN10 number string like "0321751043"
     * - isbn13: an ISBN13 number string like "978-0321751041"
     * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
     * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
     * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
     * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
     * - byte: base64 encoded binary data
     * - password: any kind of string
     * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
     * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
     * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
     * </pre>
     *
     * <code>optional string format = 6;</code>
     * @return The format.
     */
    java.lang.String getFormat();
    /**
     * <pre>
     * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
     *
     * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
     * - uri: an URI as parsed by Golang net/url.ParseRequestURI
     * - email: an email address as parsed by Golang net/mail.ParseAddress
     * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
     * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
     * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
     * - cidr: a CIDR as parsed by Golang net.ParseCIDR
     * - mac: a MAC address as parsed by Golang net.ParseMAC
     * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
     * - isbn10: an ISBN10 number string like "0321751043"
     * - isbn13: an ISBN13 number string like "978-0321751041"
     * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
     * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
     * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
     * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
     * - byte: base64 encoded binary data
     * - password: any kind of string
     * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
     * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
     * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
     * </pre>
     *
     * <code>optional string format = 6;</code>
     * @return The bytes for format.
     */
    com.google.protobuf.ByteString
        getFormatBytes();

    /**
     * <code>optional string title = 7;</code>
     * @return Whether the title field is set.
     */
    boolean hasTitle();
    /**
     * <code>optional string title = 7;</code>
     * @return The title.
     */
    java.lang.String getTitle();
    /**
     * <code>optional string title = 7;</code>
     * @return The bytes for title.
     */
    com.google.protobuf.ByteString
        getTitleBytes();

    /**
     * <pre>
     * default is a default value for undefined object fields.
     * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
     * @return Whether the default field is set.
     */
    boolean hasDefault();
    /**
     * <pre>
     * default is a default value for undefined object fields.
     * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
     * @return The default.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSON getDefault();
    /**
     * <pre>
     * default is a default value for undefined object fields.
     * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getDefaultOrBuilder();

    /**
     * <code>optional double maximum = 9;</code>
     * @return Whether the maximum field is set.
     */
    boolean hasMaximum();
    /**
     * <code>optional double maximum = 9;</code>
     * @return The maximum.
     */
    double getMaximum();

    /**
     * <code>optional bool exclusiveMaximum = 10;</code>
     * @return Whether the exclusiveMaximum field is set.
     */
    boolean hasExclusiveMaximum();
    /**
     * <code>optional bool exclusiveMaximum = 10;</code>
     * @return The exclusiveMaximum.
     */
    boolean getExclusiveMaximum();

    /**
     * <code>optional double minimum = 11;</code>
     * @return Whether the minimum field is set.
     */
    boolean hasMinimum();
    /**
     * <code>optional double minimum = 11;</code>
     * @return The minimum.
     */
    double getMinimum();

    /**
     * <code>optional bool exclusiveMinimum = 12;</code>
     * @return Whether the exclusiveMinimum field is set.
     */
    boolean hasExclusiveMinimum();
    /**
     * <code>optional bool exclusiveMinimum = 12;</code>
     * @return The exclusiveMinimum.
     */
    boolean getExclusiveMinimum();

    /**
     * <code>optional int64 maxLength = 13;</code>
     * @return Whether the maxLength field is set.
     */
    boolean hasMaxLength();
    /**
     * <code>optional int64 maxLength = 13;</code>
     * @return The maxLength.
     */
    long getMaxLength();

    /**
     * <code>optional int64 minLength = 14;</code>
     * @return Whether the minLength field is set.
     */
    boolean hasMinLength();
    /**
     * <code>optional int64 minLength = 14;</code>
     * @return The minLength.
     */
    long getMinLength();

    /**
     * <code>optional string pattern = 15;</code>
     * @return Whether the pattern field is set.
     */
    boolean hasPattern();
    /**
     * <code>optional string pattern = 15;</code>
     * @return The pattern.
     */
    java.lang.String getPattern();
    /**
     * <code>optional string pattern = 15;</code>
     * @return The bytes for pattern.
     */
    com.google.protobuf.ByteString
        getPatternBytes();

    /**
     * <code>optional int64 maxItems = 16;</code>
     * @return Whether the maxItems field is set.
     */
    boolean hasMaxItems();
    /**
     * <code>optional int64 maxItems = 16;</code>
     * @return The maxItems.
     */
    long getMaxItems();

    /**
     * <code>optional int64 minItems = 17;</code>
     * @return Whether the minItems field is set.
     */
    boolean hasMinItems();
    /**
     * <code>optional int64 minItems = 17;</code>
     * @return The minItems.
     */
    long getMinItems();

    /**
     * <code>optional bool uniqueItems = 18;</code>
     * @return Whether the uniqueItems field is set.
     */
    boolean hasUniqueItems();
    /**
     * <code>optional bool uniqueItems = 18;</code>
     * @return The uniqueItems.
     */
    boolean getUniqueItems();

    /**
     * <code>optional double multipleOf = 19;</code>
     * @return Whether the multipleOf field is set.
     */
    boolean hasMultipleOf();
    /**
     * <code>optional double multipleOf = 19;</code>
     * @return The multipleOf.
     */
    double getMultipleOf();

    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSON> 
        getEnumList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSON getEnum(int index);
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    int getEnumCount();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> 
        getEnumOrBuilderList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getEnumOrBuilder(
        int index);

    /**
     * <code>optional int64 maxProperties = 21;</code>
     * @return Whether the maxProperties field is set.
     */
    boolean hasMaxProperties();
    /**
     * <code>optional int64 maxProperties = 21;</code>
     * @return The maxProperties.
     */
    long getMaxProperties();

    /**
     * <code>optional int64 minProperties = 22;</code>
     * @return Whether the minProperties field is set.
     */
    boolean hasMinProperties();
    /**
     * <code>optional int64 minProperties = 22;</code>
     * @return The minProperties.
     */
    long getMinProperties();

    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @return A list containing the required.
     */
    java.util.List<java.lang.String>
        getRequiredList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @return The count of required.
     */
    int getRequiredCount();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @param index The index of the element to return.
     * @return The required at the given index.
     */
    java.lang.String getRequired(int index);
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @param index The index of the value to return.
     * @return The bytes of the required at the given index.
     */
    com.google.protobuf.ByteString
        getRequiredBytes(int index);

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
     * @return Whether the items field is set.
     */
    boolean hasItems();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
     * @return The items.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray getItems();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArrayOrBuilder getItemsOrBuilder();

    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> 
        getAllOfList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getAllOf(int index);
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    int getAllOfCount();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getAllOfOrBuilderList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getAllOfOrBuilder(
        int index);

    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> 
        getOneOfList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getOneOf(int index);
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    int getOneOfCount();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getOneOfOrBuilderList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getOneOfOrBuilder(
        int index);

    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> 
        getAnyOfList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getAnyOf(int index);
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    int getAnyOfCount();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getAnyOfOrBuilderList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getAnyOfOrBuilder(
        int index);

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
     * @return Whether the not field is set.
     */
    boolean hasNot();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
     * @return The not.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getNot();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getNotOrBuilder();

    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    int getPropertiesCount();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    boolean containsProperties(
        java.lang.String key);
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    getProperties();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    getPropertiesMap();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPropertiesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue);
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPropertiesOrThrow(
        java.lang.String key);

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
     * @return Whether the additionalProperties field is set.
     */
    boolean hasAdditionalProperties();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
     * @return The additionalProperties.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getAdditionalProperties();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder getAdditionalPropertiesOrBuilder();

    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    int getPatternPropertiesCount();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    boolean containsPatternProperties(
        java.lang.String key);
    /**
     * Use {@link #getPatternPropertiesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    getPatternProperties();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    getPatternPropertiesMap();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPatternPropertiesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue);
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPatternPropertiesOrThrow(
        java.lang.String key);

    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    int getDependenciesCount();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    boolean containsDependencies(
        java.lang.String key);
    /**
     * Use {@link #getDependenciesMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray>
    getDependencies();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray>
    getDependenciesMap();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDependenciesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray defaultValue);
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDependenciesOrThrow(
        java.lang.String key);

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
     * @return Whether the additionalItems field is set.
     */
    boolean hasAdditionalItems();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
     * @return The additionalItems.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getAdditionalItems();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder getAdditionalItemsOrBuilder();

    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    int getDefinitionsCount();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    boolean containsDefinitions(
        java.lang.String key);
    /**
     * Use {@link #getDefinitionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    getDefinitions();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    getDefinitionsMap();
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefinitionsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue);
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefinitionsOrThrow(
        java.lang.String key);

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
     * @return Whether the externalDocs field is set.
     */
    boolean hasExternalDocs();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
     * @return The externalDocs.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation getExternalDocs();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentationOrBuilder getExternalDocsOrBuilder();

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
     * @return Whether the example field is set.
     */
    boolean hasExample();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
     * @return The example.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSON getExample();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getExampleOrBuilder();

    /**
     * <code>optional bool nullable = 37;</code>
     * @return Whether the nullable field is set.
     */
    boolean hasNullable();
    /**
     * <code>optional bool nullable = 37;</code>
     * @return The nullable.
     */
    boolean getNullable();

    /**
     * <pre>
     * x-kubernetes-preserve-unknown-fields stops the API server
     * decoding step from pruning fields which are not specified
     * in the validation schema. This affects fields recursively,
     * but switches back to normal pruning behaviour if nested
     * properties or additionalProperties are specified in the schema.
     * This can either be true or undefined. False is forbidden.
     * </pre>
     *
     * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
     * @return Whether the xKubernetesPreserveUnknownFields field is set.
     */
    boolean hasXKubernetesPreserveUnknownFields();
    /**
     * <pre>
     * x-kubernetes-preserve-unknown-fields stops the API server
     * decoding step from pruning fields which are not specified
     * in the validation schema. This affects fields recursively,
     * but switches back to normal pruning behaviour if nested
     * properties or additionalProperties are specified in the schema.
     * This can either be true or undefined. False is forbidden.
     * </pre>
     *
     * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
     * @return The xKubernetesPreserveUnknownFields.
     */
    boolean getXKubernetesPreserveUnknownFields();

    /**
     * <pre>
     * x-kubernetes-embedded-resource defines that the value is an
     * embedded Kubernetes runtime.Object, with TypeMeta and
     * ObjectMeta. The type must be object. It is allowed to further
     * restrict the embedded object. kind, apiVersion and metadata
     * are validated automatically. x-kubernetes-preserve-unknown-fields
     * is allowed to be true, but does not have to be if the object
     * is fully specified (up to kind, apiVersion, metadata).
     * </pre>
     *
     * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
     * @return Whether the xKubernetesEmbeddedResource field is set.
     */
    boolean hasXKubernetesEmbeddedResource();
    /**
     * <pre>
     * x-kubernetes-embedded-resource defines that the value is an
     * embedded Kubernetes runtime.Object, with TypeMeta and
     * ObjectMeta. The type must be object. It is allowed to further
     * restrict the embedded object. kind, apiVersion and metadata
     * are validated automatically. x-kubernetes-preserve-unknown-fields
     * is allowed to be true, but does not have to be if the object
     * is fully specified (up to kind, apiVersion, metadata).
     * </pre>
     *
     * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
     * @return The xKubernetesEmbeddedResource.
     */
    boolean getXKubernetesEmbeddedResource();

    /**
     * <pre>
     * x-kubernetes-int-or-string specifies that this value is
     * either an integer or a string. If this is true, an empty
     * type is allowed and type as child of anyOf is permitted
     * if following one of the following patterns:
     *
     * 1) anyOf:
     * - type: integer
     * - type: string
     * 2) allOf:
     * - anyOf:
     * - type: integer
     * - type: string
     * - ... zero or more
     * </pre>
     *
     * <code>optional bool xKubernetesIntOrString = 40;</code>
     * @return Whether the xKubernetesIntOrString field is set.
     */
    boolean hasXKubernetesIntOrString();
    /**
     * <pre>
     * x-kubernetes-int-or-string specifies that this value is
     * either an integer or a string. If this is true, an empty
     * type is allowed and type as child of anyOf is permitted
     * if following one of the following patterns:
     *
     * 1) anyOf:
     * - type: integer
     * - type: string
     * 2) allOf:
     * - anyOf:
     * - type: integer
     * - type: string
     * - ... zero or more
     * </pre>
     *
     * <code>optional bool xKubernetesIntOrString = 40;</code>
     * @return The xKubernetesIntOrString.
     */
    boolean getXKubernetesIntOrString();

    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @return A list containing the xKubernetesListMapKeys.
     */
    java.util.List<java.lang.String>
        getXKubernetesListMapKeysList();
    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @return The count of xKubernetesListMapKeys.
     */
    int getXKubernetesListMapKeysCount();
    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @param index The index of the element to return.
     * @return The xKubernetesListMapKeys at the given index.
     */
    java.lang.String getXKubernetesListMapKeys(int index);
    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @param index The index of the value to return.
     * @return The bytes of the xKubernetesListMapKeys at the given index.
     */
    com.google.protobuf.ByteString
        getXKubernetesListMapKeysBytes(int index);

    /**
     * <pre>
     * x-kubernetes-list-type annotates an array to further describe its topology.
     * This extension must only be used on lists and may have 3 possible values:
     *
     * 1) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic lists will be entirely replaced when updated. This extension
     * may be used on any type of list (struct, scalar, ...).
     * 2) `set`:
     * Sets are lists that must not have multiple items with the same value. Each
     * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
     * array with x-kubernetes-list-type `atomic`.
     * 3) `map`:
     * These lists are like maps in that their elements have a non-index key
     * used to identify them. Order is preserved upon merge. The map tag
     * must only be used on a list with elements of type object.
     * Defaults to atomic for arrays.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesListType = 42;</code>
     * @return Whether the xKubernetesListType field is set.
     */
    boolean hasXKubernetesListType();
    /**
     * <pre>
     * x-kubernetes-list-type annotates an array to further describe its topology.
     * This extension must only be used on lists and may have 3 possible values:
     *
     * 1) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic lists will be entirely replaced when updated. This extension
     * may be used on any type of list (struct, scalar, ...).
     * 2) `set`:
     * Sets are lists that must not have multiple items with the same value. Each
     * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
     * array with x-kubernetes-list-type `atomic`.
     * 3) `map`:
     * These lists are like maps in that their elements have a non-index key
     * used to identify them. Order is preserved upon merge. The map tag
     * must only be used on a list with elements of type object.
     * Defaults to atomic for arrays.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesListType = 42;</code>
     * @return The xKubernetesListType.
     */
    java.lang.String getXKubernetesListType();
    /**
     * <pre>
     * x-kubernetes-list-type annotates an array to further describe its topology.
     * This extension must only be used on lists and may have 3 possible values:
     *
     * 1) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic lists will be entirely replaced when updated. This extension
     * may be used on any type of list (struct, scalar, ...).
     * 2) `set`:
     * Sets are lists that must not have multiple items with the same value. Each
     * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
     * array with x-kubernetes-list-type `atomic`.
     * 3) `map`:
     * These lists are like maps in that their elements have a non-index key
     * used to identify them. Order is preserved upon merge. The map tag
     * must only be used on a list with elements of type object.
     * Defaults to atomic for arrays.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesListType = 42;</code>
     * @return The bytes for xKubernetesListType.
     */
    com.google.protobuf.ByteString
        getXKubernetesListTypeBytes();

    /**
     * <pre>
     * x-kubernetes-map-type annotates an object to further describe its topology.
     * This extension must only be used when type is object and may have 2 possible values:
     *
     * 1) `granular`:
     * These maps are actual maps (key-value pairs) and each fields are independent
     * from each other (they can each be manipulated by separate actors). This is
     * the default behaviour for all maps.
     * 2) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic maps will be entirely replaced when updated.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesMapType = 43;</code>
     * @return Whether the xKubernetesMapType field is set.
     */
    boolean hasXKubernetesMapType();
    /**
     * <pre>
     * x-kubernetes-map-type annotates an object to further describe its topology.
     * This extension must only be used when type is object and may have 2 possible values:
     *
     * 1) `granular`:
     * These maps are actual maps (key-value pairs) and each fields are independent
     * from each other (they can each be manipulated by separate actors). This is
     * the default behaviour for all maps.
     * 2) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic maps will be entirely replaced when updated.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesMapType = 43;</code>
     * @return The xKubernetesMapType.
     */
    java.lang.String getXKubernetesMapType();
    /**
     * <pre>
     * x-kubernetes-map-type annotates an object to further describe its topology.
     * This extension must only be used when type is object and may have 2 possible values:
     *
     * 1) `granular`:
     * These maps are actual maps (key-value pairs) and each fields are independent
     * from each other (they can each be manipulated by separate actors). This is
     * the default behaviour for all maps.
     * 2) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic maps will be entirely replaced when updated.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesMapType = 43;</code>
     * @return The bytes for xKubernetesMapType.
     */
    com.google.protobuf.ByteString
        getXKubernetesMapTypeBytes();

    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule> 
        getXKubernetesValidationsList();
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule getXKubernetesValidations(int index);
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    int getXKubernetesValidationsCount();
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder> 
        getXKubernetesValidationsOrBuilderList();
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder getXKubernetesValidationsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps}
   */
  public static final class JSONSchemaProps extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps)
      JSONSchemaPropsOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        JSONSchemaProps.class.getName());
    }
    // Use JSONSchemaProps.newBuilder() to construct.
    private JSONSchemaProps(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private JSONSchemaProps() {
      id_ = "";
      schema_ = "";
      ref_ = "";
      description_ = "";
      type_ = "";
      format_ = "";
      title_ = "";
      pattern_ = "";
      enum_ = java.util.Collections.emptyList();
      required_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      allOf_ = java.util.Collections.emptyList();
      oneOf_ = java.util.Collections.emptyList();
      anyOf_ = java.util.Collections.emptyList();
      xKubernetesListMapKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      xKubernetesListType_ = "";
      xKubernetesMapType_ = "";
      xKubernetesValidations_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 29:
          return internalGetProperties();
        case 31:
          return internalGetPatternProperties();
        case 32:
          return internalGetDependencies();
        case 34:
          return internalGetDefinitions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder.class);
    }

    private int bitField0_;
    private int bitField1_;
    public static final int ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object id_ = "";
    /**
     * <code>optional string id = 1;</code>
     * @return Whether the id field is set.
     */
    @java.lang.Override
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          id_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string id = 1;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SCHEMA_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object schema_ = "";
    /**
     * <code>optional string schema = 2;</code>
     * @return Whether the schema field is set.
     */
    @java.lang.Override
    public boolean hasSchema() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional string schema = 2;</code>
     * @return The schema.
     */
    @java.lang.Override
    public java.lang.String getSchema() {
      java.lang.Object ref = schema_;
      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()) {
          schema_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string schema = 2;</code>
     * @return The bytes for schema.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSchemaBytes() {
      java.lang.Object ref = schema_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        schema_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REF_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object ref_ = "";
    /**
     * <code>optional string ref = 3;</code>
     * @return Whether the ref field is set.
     */
    @java.lang.Override
    public boolean hasRef() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional string ref = 3;</code>
     * @return The ref.
     */
    @java.lang.Override
    public java.lang.String getRef() {
      java.lang.Object ref = ref_;
      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()) {
          ref_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string ref = 3;</code>
     * @return The bytes for ref.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRefBytes() {
      java.lang.Object ref = ref_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ref_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * <code>optional string description = 4;</code>
     * @return Whether the description field is set.
     */
    @java.lang.Override
    public boolean hasDescription() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional string description = 4;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          description_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string description = 4;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <code>optional string type = 5;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional string type = 5;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string type = 5;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FORMAT_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object format_ = "";
    /**
     * <pre>
     * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
     *
     * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
     * - uri: an URI as parsed by Golang net/url.ParseRequestURI
     * - email: an email address as parsed by Golang net/mail.ParseAddress
     * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
     * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
     * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
     * - cidr: a CIDR as parsed by Golang net.ParseCIDR
     * - mac: a MAC address as parsed by Golang net.ParseMAC
     * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
     * - isbn10: an ISBN10 number string like "0321751043"
     * - isbn13: an ISBN13 number string like "978-0321751041"
     * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
     * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
     * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
     * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
     * - byte: base64 encoded binary data
     * - password: any kind of string
     * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
     * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
     * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
     * </pre>
     *
     * <code>optional string format = 6;</code>
     * @return Whether the format field is set.
     */
    @java.lang.Override
    public boolean hasFormat() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
     *
     * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
     * - uri: an URI as parsed by Golang net/url.ParseRequestURI
     * - email: an email address as parsed by Golang net/mail.ParseAddress
     * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
     * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
     * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
     * - cidr: a CIDR as parsed by Golang net.ParseCIDR
     * - mac: a MAC address as parsed by Golang net.ParseMAC
     * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
     * - isbn10: an ISBN10 number string like "0321751043"
     * - isbn13: an ISBN13 number string like "978-0321751041"
     * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
     * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
     * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
     * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
     * - byte: base64 encoded binary data
     * - password: any kind of string
     * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
     * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
     * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
     * </pre>
     *
     * <code>optional string format = 6;</code>
     * @return The format.
     */
    @java.lang.Override
    public java.lang.String getFormat() {
      java.lang.Object ref = format_;
      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()) {
          format_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
     *
     * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
     * - uri: an URI as parsed by Golang net/url.ParseRequestURI
     * - email: an email address as parsed by Golang net/mail.ParseAddress
     * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
     * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
     * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
     * - cidr: a CIDR as parsed by Golang net.ParseCIDR
     * - mac: a MAC address as parsed by Golang net.ParseMAC
     * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
     * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
     * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
     * - isbn10: an ISBN10 number string like "0321751043"
     * - isbn13: an ISBN13 number string like "978-0321751041"
     * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
     * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
     * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
     * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
     * - byte: base64 encoded binary data
     * - password: any kind of string
     * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
     * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
     * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
     * </pre>
     *
     * <code>optional string format = 6;</code>
     * @return The bytes for format.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFormatBytes() {
      java.lang.Object ref = format_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        format_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TITLE_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object title_ = "";
    /**
     * <code>optional string title = 7;</code>
     * @return Whether the title field is set.
     */
    @java.lang.Override
    public boolean hasTitle() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional string title = 7;</code>
     * @return The title.
     */
    @java.lang.Override
    public java.lang.String getTitle() {
      java.lang.Object ref = title_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          title_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string title = 7;</code>
     * @return The bytes for title.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTitleBytes() {
      java.lang.Object ref = title_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        title_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEFAULT_FIELD_NUMBER = 8;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSON default_;
    /**
     * <pre>
     * default is a default value for undefined object fields.
     * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
     * @return Whether the default field is set.
     */
    @java.lang.Override
    public boolean hasDefault() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * default is a default value for undefined object fields.
     * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
     * @return The default.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getDefault() {
      return default_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : default_;
    }
    /**
     * <pre>
     * default is a default value for undefined object fields.
     * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
     * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getDefaultOrBuilder() {
      return default_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : default_;
    }

    public static final int MAXIMUM_FIELD_NUMBER = 9;
    private double maximum_ = 0D;
    /**
     * <code>optional double maximum = 9;</code>
     * @return Whether the maximum field is set.
     */
    @java.lang.Override
    public boolean hasMaximum() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional double maximum = 9;</code>
     * @return The maximum.
     */
    @java.lang.Override
    public double getMaximum() {
      return maximum_;
    }

    public static final int EXCLUSIVEMAXIMUM_FIELD_NUMBER = 10;
    private boolean exclusiveMaximum_ = false;
    /**
     * <code>optional bool exclusiveMaximum = 10;</code>
     * @return Whether the exclusiveMaximum field is set.
     */
    @java.lang.Override
    public boolean hasExclusiveMaximum() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional bool exclusiveMaximum = 10;</code>
     * @return The exclusiveMaximum.
     */
    @java.lang.Override
    public boolean getExclusiveMaximum() {
      return exclusiveMaximum_;
    }

    public static final int MINIMUM_FIELD_NUMBER = 11;
    private double minimum_ = 0D;
    /**
     * <code>optional double minimum = 11;</code>
     * @return Whether the minimum field is set.
     */
    @java.lang.Override
    public boolean hasMinimum() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional double minimum = 11;</code>
     * @return The minimum.
     */
    @java.lang.Override
    public double getMinimum() {
      return minimum_;
    }

    public static final int EXCLUSIVEMINIMUM_FIELD_NUMBER = 12;
    private boolean exclusiveMinimum_ = false;
    /**
     * <code>optional bool exclusiveMinimum = 12;</code>
     * @return Whether the exclusiveMinimum field is set.
     */
    @java.lang.Override
    public boolean hasExclusiveMinimum() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional bool exclusiveMinimum = 12;</code>
     * @return The exclusiveMinimum.
     */
    @java.lang.Override
    public boolean getExclusiveMinimum() {
      return exclusiveMinimum_;
    }

    public static final int MAXLENGTH_FIELD_NUMBER = 13;
    private long maxLength_ = 0L;
    /**
     * <code>optional int64 maxLength = 13;</code>
     * @return Whether the maxLength field is set.
     */
    @java.lang.Override
    public boolean hasMaxLength() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional int64 maxLength = 13;</code>
     * @return The maxLength.
     */
    @java.lang.Override
    public long getMaxLength() {
      return maxLength_;
    }

    public static final int MINLENGTH_FIELD_NUMBER = 14;
    private long minLength_ = 0L;
    /**
     * <code>optional int64 minLength = 14;</code>
     * @return Whether the minLength field is set.
     */
    @java.lang.Override
    public boolean hasMinLength() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional int64 minLength = 14;</code>
     * @return The minLength.
     */
    @java.lang.Override
    public long getMinLength() {
      return minLength_;
    }

    public static final int PATTERN_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private volatile java.lang.Object pattern_ = "";
    /**
     * <code>optional string pattern = 15;</code>
     * @return Whether the pattern field is set.
     */
    @java.lang.Override
    public boolean hasPattern() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <code>optional string pattern = 15;</code>
     * @return The pattern.
     */
    @java.lang.Override
    public java.lang.String getPattern() {
      java.lang.Object ref = pattern_;
      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()) {
          pattern_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string pattern = 15;</code>
     * @return The bytes for pattern.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPatternBytes() {
      java.lang.Object ref = pattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MAXITEMS_FIELD_NUMBER = 16;
    private long maxItems_ = 0L;
    /**
     * <code>optional int64 maxItems = 16;</code>
     * @return Whether the maxItems field is set.
     */
    @java.lang.Override
    public boolean hasMaxItems() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <code>optional int64 maxItems = 16;</code>
     * @return The maxItems.
     */
    @java.lang.Override
    public long getMaxItems() {
      return maxItems_;
    }

    public static final int MINITEMS_FIELD_NUMBER = 17;
    private long minItems_ = 0L;
    /**
     * <code>optional int64 minItems = 17;</code>
     * @return Whether the minItems field is set.
     */
    @java.lang.Override
    public boolean hasMinItems() {
      return ((bitField0_ & 0x00010000) != 0);
    }
    /**
     * <code>optional int64 minItems = 17;</code>
     * @return The minItems.
     */
    @java.lang.Override
    public long getMinItems() {
      return minItems_;
    }

    public static final int UNIQUEITEMS_FIELD_NUMBER = 18;
    private boolean uniqueItems_ = false;
    /**
     * <code>optional bool uniqueItems = 18;</code>
     * @return Whether the uniqueItems field is set.
     */
    @java.lang.Override
    public boolean hasUniqueItems() {
      return ((bitField0_ & 0x00020000) != 0);
    }
    /**
     * <code>optional bool uniqueItems = 18;</code>
     * @return The uniqueItems.
     */
    @java.lang.Override
    public boolean getUniqueItems() {
      return uniqueItems_;
    }

    public static final int MULTIPLEOF_FIELD_NUMBER = 19;
    private double multipleOf_ = 0D;
    /**
     * <code>optional double multipleOf = 19;</code>
     * @return Whether the multipleOf field is set.
     */
    @java.lang.Override
    public boolean hasMultipleOf() {
      return ((bitField0_ & 0x00040000) != 0);
    }
    /**
     * <code>optional double multipleOf = 19;</code>
     * @return The multipleOf.
     */
    @java.lang.Override
    public double getMultipleOf() {
      return multipleOf_;
    }

    public static final int ENUM_FIELD_NUMBER = 20;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSON> enum_;
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSON> getEnumList() {
      return enum_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> 
        getEnumOrBuilderList() {
      return enum_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    @java.lang.Override
    public int getEnumCount() {
      return enum_.size();
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getEnum(int index) {
      return enum_.get(index);
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getEnumOrBuilder(
        int index) {
      return enum_.get(index);
    }

    public static final int MAXPROPERTIES_FIELD_NUMBER = 21;
    private long maxProperties_ = 0L;
    /**
     * <code>optional int64 maxProperties = 21;</code>
     * @return Whether the maxProperties field is set.
     */
    @java.lang.Override
    public boolean hasMaxProperties() {
      return ((bitField0_ & 0x00080000) != 0);
    }
    /**
     * <code>optional int64 maxProperties = 21;</code>
     * @return The maxProperties.
     */
    @java.lang.Override
    public long getMaxProperties() {
      return maxProperties_;
    }

    public static final int MINPROPERTIES_FIELD_NUMBER = 22;
    private long minProperties_ = 0L;
    /**
     * <code>optional int64 minProperties = 22;</code>
     * @return Whether the minProperties field is set.
     */
    @java.lang.Override
    public boolean hasMinProperties() {
      return ((bitField0_ & 0x00100000) != 0);
    }
    /**
     * <code>optional int64 minProperties = 22;</code>
     * @return The minProperties.
     */
    @java.lang.Override
    public long getMinProperties() {
      return minProperties_;
    }

    public static final int REQUIRED_FIELD_NUMBER = 23;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList required_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @return A list containing the required.
     */
    public com.google.protobuf.ProtocolStringList
        getRequiredList() {
      return required_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @return The count of required.
     */
    public int getRequiredCount() {
      return required_.size();
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @param index The index of the element to return.
     * @return The required at the given index.
     */
    public java.lang.String getRequired(int index) {
      return required_.get(index);
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string required = 23;</code>
     * @param index The index of the value to return.
     * @return The bytes of the required at the given index.
     */
    public com.google.protobuf.ByteString
        getRequiredBytes(int index) {
      return required_.getByteString(index);
    }

    public static final int ITEMS_FIELD_NUMBER = 24;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray items_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
     * @return Whether the items field is set.
     */
    @java.lang.Override
    public boolean hasItems() {
      return ((bitField0_ & 0x00200000) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
     * @return The items.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray getItems() {
      return items_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.getDefaultInstance() : items_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArrayOrBuilder getItemsOrBuilder() {
      return items_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.getDefaultInstance() : items_;
    }

    public static final int ALLOF_FIELD_NUMBER = 25;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> allOf_;
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getAllOfList() {
      return allOf_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getAllOfOrBuilderList() {
      return allOf_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    @java.lang.Override
    public int getAllOfCount() {
      return allOf_.size();
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getAllOf(int index) {
      return allOf_.get(index);
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getAllOfOrBuilder(
        int index) {
      return allOf_.get(index);
    }

    public static final int ONEOF_FIELD_NUMBER = 26;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> oneOf_;
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getOneOfList() {
      return oneOf_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getOneOfOrBuilderList() {
      return oneOf_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    @java.lang.Override
    public int getOneOfCount() {
      return oneOf_.size();
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getOneOf(int index) {
      return oneOf_.get(index);
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getOneOfOrBuilder(
        int index) {
      return oneOf_.get(index);
    }

    public static final int ANYOF_FIELD_NUMBER = 27;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> anyOf_;
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getAnyOfList() {
      return anyOf_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getAnyOfOrBuilderList() {
      return anyOf_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    @java.lang.Override
    public int getAnyOfCount() {
      return anyOf_.size();
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getAnyOf(int index) {
      return anyOf_.get(index);
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getAnyOfOrBuilder(
        int index) {
      return anyOf_.get(index);
    }

    public static final int NOT_FIELD_NUMBER = 28;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps not_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
     * @return Whether the not field is set.
     */
    @java.lang.Override
    public boolean hasNot() {
      return ((bitField0_ & 0x00400000) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
     * @return The not.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getNot() {
      return not_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : not_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getNotOrBuilder() {
      return not_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : not_;
    }

    public static final int PROPERTIES_FIELD_NUMBER = 29;
    private static final class PropertiesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>newDefaultInstance(
                  io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PropertiesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> properties_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    internalGetProperties() {
      if (properties_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            PropertiesDefaultEntryHolder.defaultEntry);
      }
      return properties_;
    }
    public int getPropertiesCount() {
      return internalGetProperties().getMap().size();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    @java.lang.Override
    public boolean containsProperties(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetProperties().getMap().containsKey(key);
    }
    /**
     * Use {@link #getPropertiesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getProperties() {
      return getPropertiesMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getPropertiesMap() {
      return internalGetProperties().getMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPropertiesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> map =
          internalGetProperties().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPropertiesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> map =
          internalGetProperties().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int ADDITIONALPROPERTIES_FIELD_NUMBER = 30;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool additionalProperties_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
     * @return Whether the additionalProperties field is set.
     */
    @java.lang.Override
    public boolean hasAdditionalProperties() {
      return ((bitField0_ & 0x00800000) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
     * @return The additionalProperties.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getAdditionalProperties() {
      return additionalProperties_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalProperties_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder getAdditionalPropertiesOrBuilder() {
      return additionalProperties_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalProperties_;
    }

    public static final int PATTERNPROPERTIES_FIELD_NUMBER = 31;
    private static final class PatternPropertiesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>newDefaultInstance(
                  io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PatternPropertiesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> patternProperties_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    internalGetPatternProperties() {
      if (patternProperties_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            PatternPropertiesDefaultEntryHolder.defaultEntry);
      }
      return patternProperties_;
    }
    public int getPatternPropertiesCount() {
      return internalGetPatternProperties().getMap().size();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    @java.lang.Override
    public boolean containsPatternProperties(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetPatternProperties().getMap().containsKey(key);
    }
    /**
     * Use {@link #getPatternPropertiesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getPatternProperties() {
      return getPatternPropertiesMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getPatternPropertiesMap() {
      return internalGetPatternProperties().getMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPatternPropertiesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> map =
          internalGetPatternProperties().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPatternPropertiesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> map =
          internalGetPatternProperties().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int DEPENDENCIES_FIELD_NUMBER = 32;
    private static final class DependenciesDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray>newDefaultInstance(
                  io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DependenciesEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> dependencies_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray>
    internalGetDependencies() {
      if (dependencies_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DependenciesDefaultEntryHolder.defaultEntry);
      }
      return dependencies_;
    }
    public int getDependenciesCount() {
      return internalGetDependencies().getMap().size();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    @java.lang.Override
    public boolean containsDependencies(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetDependencies().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDependenciesMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> getDependencies() {
      return getDependenciesMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> getDependenciesMap() {
      return internalGetDependencies().getMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDependenciesOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> map =
          internalGetDependencies().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDependenciesOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> map =
          internalGetDependencies().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int ADDITIONALITEMS_FIELD_NUMBER = 33;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool additionalItems_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
     * @return Whether the additionalItems field is set.
     */
    @java.lang.Override
    public boolean hasAdditionalItems() {
      return ((bitField0_ & 0x01000000) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
     * @return The additionalItems.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getAdditionalItems() {
      return additionalItems_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalItems_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder getAdditionalItemsOrBuilder() {
      return additionalItems_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalItems_;
    }

    public static final int DEFINITIONS_FIELD_NUMBER = 34;
    private static final class DefinitionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>newDefaultInstance(
                  io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DefinitionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> definitions_;
    private com.google.protobuf.MapField<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
    internalGetDefinitions() {
      if (definitions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DefinitionsDefaultEntryHolder.defaultEntry);
      }
      return definitions_;
    }
    public int getDefinitionsCount() {
      return internalGetDefinitions().getMap().size();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    @java.lang.Override
    public boolean containsDefinitions(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetDefinitions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDefinitionsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getDefinitions() {
      return getDefinitionsMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getDefinitionsMap() {
      return internalGetDefinitions().getMap();
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    @java.lang.Override
    public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefinitionsOrDefault(
        java.lang.String key,
        /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> map =
          internalGetDefinitions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefinitionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> map =
          internalGetDefinitions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int EXTERNALDOCS_FIELD_NUMBER = 35;
    private io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation externalDocs_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
     * @return Whether the externalDocs field is set.
     */
    @java.lang.Override
    public boolean hasExternalDocs() {
      return ((bitField0_ & 0x02000000) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
     * @return The externalDocs.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation getExternalDocs() {
      return externalDocs_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.getDefaultInstance() : externalDocs_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentationOrBuilder getExternalDocsOrBuilder() {
      return externalDocs_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.getDefaultInstance() : externalDocs_;
    }

    public static final int EXAMPLE_FIELD_NUMBER = 36;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSON example_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
     * @return Whether the example field is set.
     */
    @java.lang.Override
    public boolean hasExample() {
      return ((bitField0_ & 0x04000000) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
     * @return The example.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getExample() {
      return example_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : example_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getExampleOrBuilder() {
      return example_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : example_;
    }

    public static final int NULLABLE_FIELD_NUMBER = 37;
    private boolean nullable_ = false;
    /**
     * <code>optional bool nullable = 37;</code>
     * @return Whether the nullable field is set.
     */
    @java.lang.Override
    public boolean hasNullable() {
      return ((bitField0_ & 0x08000000) != 0);
    }
    /**
     * <code>optional bool nullable = 37;</code>
     * @return The nullable.
     */
    @java.lang.Override
    public boolean getNullable() {
      return nullable_;
    }

    public static final int XKUBERNETESPRESERVEUNKNOWNFIELDS_FIELD_NUMBER = 38;
    private boolean xKubernetesPreserveUnknownFields_ = false;
    /**
     * <pre>
     * x-kubernetes-preserve-unknown-fields stops the API server
     * decoding step from pruning fields which are not specified
     * in the validation schema. This affects fields recursively,
     * but switches back to normal pruning behaviour if nested
     * properties or additionalProperties are specified in the schema.
     * This can either be true or undefined. False is forbidden.
     * </pre>
     *
     * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
     * @return Whether the xKubernetesPreserveUnknownFields field is set.
     */
    @java.lang.Override
    public boolean hasXKubernetesPreserveUnknownFields() {
      return ((bitField0_ & 0x10000000) != 0);
    }
    /**
     * <pre>
     * x-kubernetes-preserve-unknown-fields stops the API server
     * decoding step from pruning fields which are not specified
     * in the validation schema. This affects fields recursively,
     * but switches back to normal pruning behaviour if nested
     * properties or additionalProperties are specified in the schema.
     * This can either be true or undefined. False is forbidden.
     * </pre>
     *
     * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
     * @return The xKubernetesPreserveUnknownFields.
     */
    @java.lang.Override
    public boolean getXKubernetesPreserveUnknownFields() {
      return xKubernetesPreserveUnknownFields_;
    }

    public static final int XKUBERNETESEMBEDDEDRESOURCE_FIELD_NUMBER = 39;
    private boolean xKubernetesEmbeddedResource_ = false;
    /**
     * <pre>
     * x-kubernetes-embedded-resource defines that the value is an
     * embedded Kubernetes runtime.Object, with TypeMeta and
     * ObjectMeta. The type must be object. It is allowed to further
     * restrict the embedded object. kind, apiVersion and metadata
     * are validated automatically. x-kubernetes-preserve-unknown-fields
     * is allowed to be true, but does not have to be if the object
     * is fully specified (up to kind, apiVersion, metadata).
     * </pre>
     *
     * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
     * @return Whether the xKubernetesEmbeddedResource field is set.
     */
    @java.lang.Override
    public boolean hasXKubernetesEmbeddedResource() {
      return ((bitField0_ & 0x20000000) != 0);
    }
    /**
     * <pre>
     * x-kubernetes-embedded-resource defines that the value is an
     * embedded Kubernetes runtime.Object, with TypeMeta and
     * ObjectMeta. The type must be object. It is allowed to further
     * restrict the embedded object. kind, apiVersion and metadata
     * are validated automatically. x-kubernetes-preserve-unknown-fields
     * is allowed to be true, but does not have to be if the object
     * is fully specified (up to kind, apiVersion, metadata).
     * </pre>
     *
     * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
     * @return The xKubernetesEmbeddedResource.
     */
    @java.lang.Override
    public boolean getXKubernetesEmbeddedResource() {
      return xKubernetesEmbeddedResource_;
    }

    public static final int XKUBERNETESINTORSTRING_FIELD_NUMBER = 40;
    private boolean xKubernetesIntOrString_ = false;
    /**
     * <pre>
     * x-kubernetes-int-or-string specifies that this value is
     * either an integer or a string. If this is true, an empty
     * type is allowed and type as child of anyOf is permitted
     * if following one of the following patterns:
     *
     * 1) anyOf:
     * - type: integer
     * - type: string
     * 2) allOf:
     * - anyOf:
     * - type: integer
     * - type: string
     * - ... zero or more
     * </pre>
     *
     * <code>optional bool xKubernetesIntOrString = 40;</code>
     * @return Whether the xKubernetesIntOrString field is set.
     */
    @java.lang.Override
    public boolean hasXKubernetesIntOrString() {
      return ((bitField0_ & 0x40000000) != 0);
    }
    /**
     * <pre>
     * x-kubernetes-int-or-string specifies that this value is
     * either an integer or a string. If this is true, an empty
     * type is allowed and type as child of anyOf is permitted
     * if following one of the following patterns:
     *
     * 1) anyOf:
     * - type: integer
     * - type: string
     * 2) allOf:
     * - anyOf:
     * - type: integer
     * - type: string
     * - ... zero or more
     * </pre>
     *
     * <code>optional bool xKubernetesIntOrString = 40;</code>
     * @return The xKubernetesIntOrString.
     */
    @java.lang.Override
    public boolean getXKubernetesIntOrString() {
      return xKubernetesIntOrString_;
    }

    public static final int XKUBERNETESLISTMAPKEYS_FIELD_NUMBER = 41;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList xKubernetesListMapKeys_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @return A list containing the xKubernetesListMapKeys.
     */
    public com.google.protobuf.ProtocolStringList
        getXKubernetesListMapKeysList() {
      return xKubernetesListMapKeys_;
    }
    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @return The count of xKubernetesListMapKeys.
     */
    public int getXKubernetesListMapKeysCount() {
      return xKubernetesListMapKeys_.size();
    }
    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @param index The index of the element to return.
     * @return The xKubernetesListMapKeys at the given index.
     */
    public java.lang.String getXKubernetesListMapKeys(int index) {
      return xKubernetesListMapKeys_.get(index);
    }
    /**
     * <pre>
     * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
     * as the index of the map.
     *
     * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
     * extension set to "map". Also, the values specified for this attribute must
     * be a scalar typed field of the child structure (no nesting is supported).
     *
     * The properties specified must either be required or have a default value,
     * to ensure those properties are present for all list items.
     *
     * +optional
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string xKubernetesListMapKeys = 41;</code>
     * @param index The index of the value to return.
     * @return The bytes of the xKubernetesListMapKeys at the given index.
     */
    public com.google.protobuf.ByteString
        getXKubernetesListMapKeysBytes(int index) {
      return xKubernetesListMapKeys_.getByteString(index);
    }

    public static final int XKUBERNETESLISTTYPE_FIELD_NUMBER = 42;
    @SuppressWarnings("serial")
    private volatile java.lang.Object xKubernetesListType_ = "";
    /**
     * <pre>
     * x-kubernetes-list-type annotates an array to further describe its topology.
     * This extension must only be used on lists and may have 3 possible values:
     *
     * 1) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic lists will be entirely replaced when updated. This extension
     * may be used on any type of list (struct, scalar, ...).
     * 2) `set`:
     * Sets are lists that must not have multiple items with the same value. Each
     * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
     * array with x-kubernetes-list-type `atomic`.
     * 3) `map`:
     * These lists are like maps in that their elements have a non-index key
     * used to identify them. Order is preserved upon merge. The map tag
     * must only be used on a list with elements of type object.
     * Defaults to atomic for arrays.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesListType = 42;</code>
     * @return Whether the xKubernetesListType field is set.
     */
    @java.lang.Override
    public boolean hasXKubernetesListType() {
      return ((bitField0_ & 0x80000000) != 0);
    }
    /**
     * <pre>
     * x-kubernetes-list-type annotates an array to further describe its topology.
     * This extension must only be used on lists and may have 3 possible values:
     *
     * 1) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic lists will be entirely replaced when updated. This extension
     * may be used on any type of list (struct, scalar, ...).
     * 2) `set`:
     * Sets are lists that must not have multiple items with the same value. Each
     * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
     * array with x-kubernetes-list-type `atomic`.
     * 3) `map`:
     * These lists are like maps in that their elements have a non-index key
     * used to identify them. Order is preserved upon merge. The map tag
     * must only be used on a list with elements of type object.
     * Defaults to atomic for arrays.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesListType = 42;</code>
     * @return The xKubernetesListType.
     */
    @java.lang.Override
    public java.lang.String getXKubernetesListType() {
      java.lang.Object ref = xKubernetesListType_;
      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()) {
          xKubernetesListType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * x-kubernetes-list-type annotates an array to further describe its topology.
     * This extension must only be used on lists and may have 3 possible values:
     *
     * 1) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic lists will be entirely replaced when updated. This extension
     * may be used on any type of list (struct, scalar, ...).
     * 2) `set`:
     * Sets are lists that must not have multiple items with the same value. Each
     * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
     * array with x-kubernetes-list-type `atomic`.
     * 3) `map`:
     * These lists are like maps in that their elements have a non-index key
     * used to identify them. Order is preserved upon merge. The map tag
     * must only be used on a list with elements of type object.
     * Defaults to atomic for arrays.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesListType = 42;</code>
     * @return The bytes for xKubernetesListType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getXKubernetesListTypeBytes() {
      java.lang.Object ref = xKubernetesListType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xKubernetesListType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XKUBERNETESMAPTYPE_FIELD_NUMBER = 43;
    @SuppressWarnings("serial")
    private volatile java.lang.Object xKubernetesMapType_ = "";
    /**
     * <pre>
     * x-kubernetes-map-type annotates an object to further describe its topology.
     * This extension must only be used when type is object and may have 2 possible values:
     *
     * 1) `granular`:
     * These maps are actual maps (key-value pairs) and each fields are independent
     * from each other (they can each be manipulated by separate actors). This is
     * the default behaviour for all maps.
     * 2) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic maps will be entirely replaced when updated.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesMapType = 43;</code>
     * @return Whether the xKubernetesMapType field is set.
     */
    @java.lang.Override
    public boolean hasXKubernetesMapType() {
      return ((bitField1_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * x-kubernetes-map-type annotates an object to further describe its topology.
     * This extension must only be used when type is object and may have 2 possible values:
     *
     * 1) `granular`:
     * These maps are actual maps (key-value pairs) and each fields are independent
     * from each other (they can each be manipulated by separate actors). This is
     * the default behaviour for all maps.
     * 2) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic maps will be entirely replaced when updated.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesMapType = 43;</code>
     * @return The xKubernetesMapType.
     */
    @java.lang.Override
    public java.lang.String getXKubernetesMapType() {
      java.lang.Object ref = xKubernetesMapType_;
      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()) {
          xKubernetesMapType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * x-kubernetes-map-type annotates an object to further describe its topology.
     * This extension must only be used when type is object and may have 2 possible values:
     *
     * 1) `granular`:
     * These maps are actual maps (key-value pairs) and each fields are independent
     * from each other (they can each be manipulated by separate actors). This is
     * the default behaviour for all maps.
     * 2) `atomic`: the list is treated as a single entity, like a scalar.
     * Atomic maps will be entirely replaced when updated.
     * +optional
     * </pre>
     *
     * <code>optional string xKubernetesMapType = 43;</code>
     * @return The bytes for xKubernetesMapType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getXKubernetesMapTypeBytes() {
      java.lang.Object ref = xKubernetesMapType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xKubernetesMapType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XKUBERNETESVALIDATIONS_FIELD_NUMBER = 44;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule> xKubernetesValidations_;
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule> getXKubernetesValidationsList() {
      return xKubernetesValidations_;
    }
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder> 
        getXKubernetesValidationsOrBuilderList() {
      return xKubernetesValidations_;
    }
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    @java.lang.Override
    public int getXKubernetesValidationsCount() {
      return xKubernetesValidations_.size();
    }
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule getXKubernetesValidations(int index) {
      return xKubernetesValidations_.get(index);
    }
    /**
     * <pre>
     * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
     * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
     * +patchMergeKey=rule
     * +patchStrategy=merge
     * +listType=map
     * +listMapKey=rule
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder getXKubernetesValidationsOrBuilder(
        int index) {
      return xKubernetesValidations_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, schema_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, ref_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, description_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, type_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, format_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 7, title_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(8, getDefault());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeDouble(9, maximum_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(10, exclusiveMaximum_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeDouble(11, minimum_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeBool(12, exclusiveMinimum_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeInt64(13, maxLength_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeInt64(14, minLength_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 15, pattern_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeInt64(16, maxItems_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        output.writeInt64(17, minItems_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        output.writeBool(18, uniqueItems_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        output.writeDouble(19, multipleOf_);
      }
      for (int i = 0; i < enum_.size(); i++) {
        output.writeMessage(20, enum_.get(i));
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        output.writeInt64(21, maxProperties_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        output.writeInt64(22, minProperties_);
      }
      for (int i = 0; i < required_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 23, required_.getRaw(i));
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        output.writeMessage(24, getItems());
      }
      for (int i = 0; i < allOf_.size(); i++) {
        output.writeMessage(25, allOf_.get(i));
      }
      for (int i = 0; i < oneOf_.size(); i++) {
        output.writeMessage(26, oneOf_.get(i));
      }
      for (int i = 0; i < anyOf_.size(); i++) {
        output.writeMessage(27, anyOf_.get(i));
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        output.writeMessage(28, getNot());
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetProperties(),
          PropertiesDefaultEntryHolder.defaultEntry,
          29);
      if (((bitField0_ & 0x00800000) != 0)) {
        output.writeMessage(30, getAdditionalProperties());
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetPatternProperties(),
          PatternPropertiesDefaultEntryHolder.defaultEntry,
          31);
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetDependencies(),
          DependenciesDefaultEntryHolder.defaultEntry,
          32);
      if (((bitField0_ & 0x01000000) != 0)) {
        output.writeMessage(33, getAdditionalItems());
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetDefinitions(),
          DefinitionsDefaultEntryHolder.defaultEntry,
          34);
      if (((bitField0_ & 0x02000000) != 0)) {
        output.writeMessage(35, getExternalDocs());
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        output.writeMessage(36, getExample());
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        output.writeBool(37, nullable_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        output.writeBool(38, xKubernetesPreserveUnknownFields_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        output.writeBool(39, xKubernetesEmbeddedResource_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        output.writeBool(40, xKubernetesIntOrString_);
      }
      for (int i = 0; i < xKubernetesListMapKeys_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 41, xKubernetesListMapKeys_.getRaw(i));
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 42, xKubernetesListType_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 43, xKubernetesMapType_);
      }
      for (int i = 0; i < xKubernetesValidations_.size(); i++) {
        output.writeMessage(44, xKubernetesValidations_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, schema_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, ref_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, description_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, type_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, format_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(7, title_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getDefault());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(9, maximum_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, exclusiveMaximum_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(11, minimum_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(12, exclusiveMinimum_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(13, maxLength_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(14, minLength_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(15, pattern_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(16, maxItems_);
      }
      if (((bitField0_ & 0x00010000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(17, minItems_);
      }
      if (((bitField0_ & 0x00020000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, uniqueItems_);
      }
      if (((bitField0_ & 0x00040000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(19, multipleOf_);
      }
      for (int i = 0; i < enum_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, enum_.get(i));
      }
      if (((bitField0_ & 0x00080000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(21, maxProperties_);
      }
      if (((bitField0_ & 0x00100000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(22, minProperties_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < required_.size(); i++) {
          dataSize += computeStringSizeNoTag(required_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getRequiredList().size();
      }
      if (((bitField0_ & 0x00200000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(24, getItems());
      }
      for (int i = 0; i < allOf_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(25, allOf_.get(i));
      }
      for (int i = 0; i < oneOf_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(26, oneOf_.get(i));
      }
      for (int i = 0; i < anyOf_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(27, anyOf_.get(i));
      }
      if (((bitField0_ & 0x00400000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(28, getNot());
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> entry
           : internalGetProperties().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
        properties__ = PropertiesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(29, properties__);
      }
      if (((bitField0_ & 0x00800000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(30, getAdditionalProperties());
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> entry
           : internalGetPatternProperties().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
        patternProperties__ = PatternPropertiesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(31, patternProperties__);
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> entry
           : internalGetDependencies().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray>
        dependencies__ = DependenciesDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(32, dependencies__);
      }
      if (((bitField0_ & 0x01000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(33, getAdditionalItems());
      }
      for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> entry
           : internalGetDefinitions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
        definitions__ = DefinitionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(34, definitions__);
      }
      if (((bitField0_ & 0x02000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(35, getExternalDocs());
      }
      if (((bitField0_ & 0x04000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(36, getExample());
      }
      if (((bitField0_ & 0x08000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(37, nullable_);
      }
      if (((bitField0_ & 0x10000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(38, xKubernetesPreserveUnknownFields_);
      }
      if (((bitField0_ & 0x20000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(39, xKubernetesEmbeddedResource_);
      }
      if (((bitField0_ & 0x40000000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(40, xKubernetesIntOrString_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < xKubernetesListMapKeys_.size(); i++) {
          dataSize += computeStringSizeNoTag(xKubernetesListMapKeys_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getXKubernetesListMapKeysList().size();
      }
      if (((bitField0_ & 0x80000000) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(42, xKubernetesListType_);
      }
      if (((bitField1_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(43, xKubernetesMapType_);
      }
      for (int i = 0; i < xKubernetesValidations_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(44, xKubernetesValidations_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasId() != other.hasId()) return false;
      if (hasId()) {
        if (!getId()
            .equals(other.getId())) return false;
      }
      if (hasSchema() != other.hasSchema()) return false;
      if (hasSchema()) {
        if (!getSchema()
            .equals(other.getSchema())) return false;
      }
      if (hasRef() != other.hasRef()) return false;
      if (hasRef()) {
        if (!getRef()
            .equals(other.getRef())) return false;
      }
      if (hasDescription() != other.hasDescription()) return false;
      if (hasDescription()) {
        if (!getDescription()
            .equals(other.getDescription())) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (hasFormat() != other.hasFormat()) return false;
      if (hasFormat()) {
        if (!getFormat()
            .equals(other.getFormat())) return false;
      }
      if (hasTitle() != other.hasTitle()) return false;
      if (hasTitle()) {
        if (!getTitle()
            .equals(other.getTitle())) return false;
      }
      if (hasDefault() != other.hasDefault()) return false;
      if (hasDefault()) {
        if (!getDefault()
            .equals(other.getDefault())) return false;
      }
      if (hasMaximum() != other.hasMaximum()) return false;
      if (hasMaximum()) {
        if (java.lang.Double.doubleToLongBits(getMaximum())
            != java.lang.Double.doubleToLongBits(
                other.getMaximum())) return false;
      }
      if (hasExclusiveMaximum() != other.hasExclusiveMaximum()) return false;
      if (hasExclusiveMaximum()) {
        if (getExclusiveMaximum()
            != other.getExclusiveMaximum()) return false;
      }
      if (hasMinimum() != other.hasMinimum()) return false;
      if (hasMinimum()) {
        if (java.lang.Double.doubleToLongBits(getMinimum())
            != java.lang.Double.doubleToLongBits(
                other.getMinimum())) return false;
      }
      if (hasExclusiveMinimum() != other.hasExclusiveMinimum()) return false;
      if (hasExclusiveMinimum()) {
        if (getExclusiveMinimum()
            != other.getExclusiveMinimum()) return false;
      }
      if (hasMaxLength() != other.hasMaxLength()) return false;
      if (hasMaxLength()) {
        if (getMaxLength()
            != other.getMaxLength()) return false;
      }
      if (hasMinLength() != other.hasMinLength()) return false;
      if (hasMinLength()) {
        if (getMinLength()
            != other.getMinLength()) return false;
      }
      if (hasPattern() != other.hasPattern()) return false;
      if (hasPattern()) {
        if (!getPattern()
            .equals(other.getPattern())) return false;
      }
      if (hasMaxItems() != other.hasMaxItems()) return false;
      if (hasMaxItems()) {
        if (getMaxItems()
            != other.getMaxItems()) return false;
      }
      if (hasMinItems() != other.hasMinItems()) return false;
      if (hasMinItems()) {
        if (getMinItems()
            != other.getMinItems()) return false;
      }
      if (hasUniqueItems() != other.hasUniqueItems()) return false;
      if (hasUniqueItems()) {
        if (getUniqueItems()
            != other.getUniqueItems()) return false;
      }
      if (hasMultipleOf() != other.hasMultipleOf()) return false;
      if (hasMultipleOf()) {
        if (java.lang.Double.doubleToLongBits(getMultipleOf())
            != java.lang.Double.doubleToLongBits(
                other.getMultipleOf())) return false;
      }
      if (!getEnumList()
          .equals(other.getEnumList())) return false;
      if (hasMaxProperties() != other.hasMaxProperties()) return false;
      if (hasMaxProperties()) {
        if (getMaxProperties()
            != other.getMaxProperties()) return false;
      }
      if (hasMinProperties() != other.hasMinProperties()) return false;
      if (hasMinProperties()) {
        if (getMinProperties()
            != other.getMinProperties()) return false;
      }
      if (!getRequiredList()
          .equals(other.getRequiredList())) return false;
      if (hasItems() != other.hasItems()) return false;
      if (hasItems()) {
        if (!getItems()
            .equals(other.getItems())) return false;
      }
      if (!getAllOfList()
          .equals(other.getAllOfList())) return false;
      if (!getOneOfList()
          .equals(other.getOneOfList())) return false;
      if (!getAnyOfList()
          .equals(other.getAnyOfList())) return false;
      if (hasNot() != other.hasNot()) return false;
      if (hasNot()) {
        if (!getNot()
            .equals(other.getNot())) return false;
      }
      if (!internalGetProperties().equals(
          other.internalGetProperties())) return false;
      if (hasAdditionalProperties() != other.hasAdditionalProperties()) return false;
      if (hasAdditionalProperties()) {
        if (!getAdditionalProperties()
            .equals(other.getAdditionalProperties())) return false;
      }
      if (!internalGetPatternProperties().equals(
          other.internalGetPatternProperties())) return false;
      if (!internalGetDependencies().equals(
          other.internalGetDependencies())) return false;
      if (hasAdditionalItems() != other.hasAdditionalItems()) return false;
      if (hasAdditionalItems()) {
        if (!getAdditionalItems()
            .equals(other.getAdditionalItems())) return false;
      }
      if (!internalGetDefinitions().equals(
          other.internalGetDefinitions())) return false;
      if (hasExternalDocs() != other.hasExternalDocs()) return false;
      if (hasExternalDocs()) {
        if (!getExternalDocs()
            .equals(other.getExternalDocs())) return false;
      }
      if (hasExample() != other.hasExample()) return false;
      if (hasExample()) {
        if (!getExample()
            .equals(other.getExample())) return false;
      }
      if (hasNullable() != other.hasNullable()) return false;
      if (hasNullable()) {
        if (getNullable()
            != other.getNullable()) return false;
      }
      if (hasXKubernetesPreserveUnknownFields() != other.hasXKubernetesPreserveUnknownFields()) return false;
      if (hasXKubernetesPreserveUnknownFields()) {
        if (getXKubernetesPreserveUnknownFields()
            != other.getXKubernetesPreserveUnknownFields()) return false;
      }
      if (hasXKubernetesEmbeddedResource() != other.hasXKubernetesEmbeddedResource()) return false;
      if (hasXKubernetesEmbeddedResource()) {
        if (getXKubernetesEmbeddedResource()
            != other.getXKubernetesEmbeddedResource()) return false;
      }
      if (hasXKubernetesIntOrString() != other.hasXKubernetesIntOrString()) return false;
      if (hasXKubernetesIntOrString()) {
        if (getXKubernetesIntOrString()
            != other.getXKubernetesIntOrString()) return false;
      }
      if (!getXKubernetesListMapKeysList()
          .equals(other.getXKubernetesListMapKeysList())) return false;
      if (hasXKubernetesListType() != other.hasXKubernetesListType()) return false;
      if (hasXKubernetesListType()) {
        if (!getXKubernetesListType()
            .equals(other.getXKubernetesListType())) return false;
      }
      if (hasXKubernetesMapType() != other.hasXKubernetesMapType()) return false;
      if (hasXKubernetesMapType()) {
        if (!getXKubernetesMapType()
            .equals(other.getXKubernetesMapType())) return false;
      }
      if (!getXKubernetesValidationsList()
          .equals(other.getXKubernetesValidationsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasId()) {
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + getId().hashCode();
      }
      if (hasSchema()) {
        hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getSchema().hashCode();
      }
      if (hasRef()) {
        hash = (37 * hash) + REF_FIELD_NUMBER;
        hash = (53 * hash) + getRef().hashCode();
      }
      if (hasDescription()) {
        hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
        hash = (53 * hash) + getDescription().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      if (hasFormat()) {
        hash = (37 * hash) + FORMAT_FIELD_NUMBER;
        hash = (53 * hash) + getFormat().hashCode();
      }
      if (hasTitle()) {
        hash = (37 * hash) + TITLE_FIELD_NUMBER;
        hash = (53 * hash) + getTitle().hashCode();
      }
      if (hasDefault()) {
        hash = (37 * hash) + DEFAULT_FIELD_NUMBER;
        hash = (53 * hash) + getDefault().hashCode();
      }
      if (hasMaximum()) {
        hash = (37 * hash) + MAXIMUM_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getMaximum()));
      }
      if (hasExclusiveMaximum()) {
        hash = (37 * hash) + EXCLUSIVEMAXIMUM_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getExclusiveMaximum());
      }
      if (hasMinimum()) {
        hash = (37 * hash) + MINIMUM_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getMinimum()));
      }
      if (hasExclusiveMinimum()) {
        hash = (37 * hash) + EXCLUSIVEMINIMUM_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getExclusiveMinimum());
      }
      if (hasMaxLength()) {
        hash = (37 * hash) + MAXLENGTH_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMaxLength());
      }
      if (hasMinLength()) {
        hash = (37 * hash) + MINLENGTH_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMinLength());
      }
      if (hasPattern()) {
        hash = (37 * hash) + PATTERN_FIELD_NUMBER;
        hash = (53 * hash) + getPattern().hashCode();
      }
      if (hasMaxItems()) {
        hash = (37 * hash) + MAXITEMS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMaxItems());
      }
      if (hasMinItems()) {
        hash = (37 * hash) + MINITEMS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMinItems());
      }
      if (hasUniqueItems()) {
        hash = (37 * hash) + UNIQUEITEMS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getUniqueItems());
      }
      if (hasMultipleOf()) {
        hash = (37 * hash) + MULTIPLEOF_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getMultipleOf()));
      }
      if (getEnumCount() > 0) {
        hash = (37 * hash) + ENUM_FIELD_NUMBER;
        hash = (53 * hash) + getEnumList().hashCode();
      }
      if (hasMaxProperties()) {
        hash = (37 * hash) + MAXPROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMaxProperties());
      }
      if (hasMinProperties()) {
        hash = (37 * hash) + MINPROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getMinProperties());
      }
      if (getRequiredCount() > 0) {
        hash = (37 * hash) + REQUIRED_FIELD_NUMBER;
        hash = (53 * hash) + getRequiredList().hashCode();
      }
      if (hasItems()) {
        hash = (37 * hash) + ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getItems().hashCode();
      }
      if (getAllOfCount() > 0) {
        hash = (37 * hash) + ALLOF_FIELD_NUMBER;
        hash = (53 * hash) + getAllOfList().hashCode();
      }
      if (getOneOfCount() > 0) {
        hash = (37 * hash) + ONEOF_FIELD_NUMBER;
        hash = (53 * hash) + getOneOfList().hashCode();
      }
      if (getAnyOfCount() > 0) {
        hash = (37 * hash) + ANYOF_FIELD_NUMBER;
        hash = (53 * hash) + getAnyOfList().hashCode();
      }
      if (hasNot()) {
        hash = (37 * hash) + NOT_FIELD_NUMBER;
        hash = (53 * hash) + getNot().hashCode();
      }
      if (!internalGetProperties().getMap().isEmpty()) {
        hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetProperties().hashCode();
      }
      if (hasAdditionalProperties()) {
        hash = (37 * hash) + ADDITIONALPROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + getAdditionalProperties().hashCode();
      }
      if (!internalGetPatternProperties().getMap().isEmpty()) {
        hash = (37 * hash) + PATTERNPROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetPatternProperties().hashCode();
      }
      if (!internalGetDependencies().getMap().isEmpty()) {
        hash = (37 * hash) + DEPENDENCIES_FIELD_NUMBER;
        hash = (53 * hash) + internalGetDependencies().hashCode();
      }
      if (hasAdditionalItems()) {
        hash = (37 * hash) + ADDITIONALITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getAdditionalItems().hashCode();
      }
      if (!internalGetDefinitions().getMap().isEmpty()) {
        hash = (37 * hash) + DEFINITIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetDefinitions().hashCode();
      }
      if (hasExternalDocs()) {
        hash = (37 * hash) + EXTERNALDOCS_FIELD_NUMBER;
        hash = (53 * hash) + getExternalDocs().hashCode();
      }
      if (hasExample()) {
        hash = (37 * hash) + EXAMPLE_FIELD_NUMBER;
        hash = (53 * hash) + getExample().hashCode();
      }
      if (hasNullable()) {
        hash = (37 * hash) + NULLABLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getNullable());
      }
      if (hasXKubernetesPreserveUnknownFields()) {
        hash = (37 * hash) + XKUBERNETESPRESERVEUNKNOWNFIELDS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getXKubernetesPreserveUnknownFields());
      }
      if (hasXKubernetesEmbeddedResource()) {
        hash = (37 * hash) + XKUBERNETESEMBEDDEDRESOURCE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getXKubernetesEmbeddedResource());
      }
      if (hasXKubernetesIntOrString()) {
        hash = (37 * hash) + XKUBERNETESINTORSTRING_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getXKubernetesIntOrString());
      }
      if (getXKubernetesListMapKeysCount() > 0) {
        hash = (37 * hash) + XKUBERNETESLISTMAPKEYS_FIELD_NUMBER;
        hash = (53 * hash) + getXKubernetesListMapKeysList().hashCode();
      }
      if (hasXKubernetesListType()) {
        hash = (37 * hash) + XKUBERNETESLISTTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getXKubernetesListType().hashCode();
      }
      if (hasXKubernetesMapType()) {
        hash = (37 * hash) + XKUBERNETESMAPTYPE_FIELD_NUMBER;
        hash = (53 * hash) + getXKubernetesMapType().hashCode();
      }
      if (getXKubernetesValidationsCount() > 0) {
        hash = (37 * hash) + XKUBERNETESVALIDATIONS_FIELD_NUMBER;
        hash = (53 * hash) + getXKubernetesValidationsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps)
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 29:
            return internalGetProperties();
          case 31:
            return internalGetPatternProperties();
          case 32:
            return internalGetDependencies();
          case 34:
            return internalGetDefinitions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 29:
            return internalGetMutableProperties();
          case 31:
            return internalGetMutablePatternProperties();
          case 32:
            return internalGetMutableDependencies();
          case 34:
            return internalGetMutableDefinitions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getDefaultFieldBuilder();
          getEnumFieldBuilder();
          getItemsFieldBuilder();
          getAllOfFieldBuilder();
          getOneOfFieldBuilder();
          getAnyOfFieldBuilder();
          getNotFieldBuilder();
          getAdditionalPropertiesFieldBuilder();
          getAdditionalItemsFieldBuilder();
          getExternalDocsFieldBuilder();
          getExampleFieldBuilder();
          getXKubernetesValidationsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        bitField1_ = 0;
        id_ = "";
        schema_ = "";
        ref_ = "";
        description_ = "";
        type_ = "";
        format_ = "";
        title_ = "";
        default_ = null;
        if (defaultBuilder_ != null) {
          defaultBuilder_.dispose();
          defaultBuilder_ = null;
        }
        maximum_ = 0D;
        exclusiveMaximum_ = false;
        minimum_ = 0D;
        exclusiveMinimum_ = false;
        maxLength_ = 0L;
        minLength_ = 0L;
        pattern_ = "";
        maxItems_ = 0L;
        minItems_ = 0L;
        uniqueItems_ = false;
        multipleOf_ = 0D;
        if (enumBuilder_ == null) {
          enum_ = java.util.Collections.emptyList();
        } else {
          enum_ = null;
          enumBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00080000);
        maxProperties_ = 0L;
        minProperties_ = 0L;
        required_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        items_ = null;
        if (itemsBuilder_ != null) {
          itemsBuilder_.dispose();
          itemsBuilder_ = null;
        }
        if (allOfBuilder_ == null) {
          allOf_ = java.util.Collections.emptyList();
        } else {
          allOf_ = null;
          allOfBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x01000000);
        if (oneOfBuilder_ == null) {
          oneOf_ = java.util.Collections.emptyList();
        } else {
          oneOf_ = null;
          oneOfBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x02000000);
        if (anyOfBuilder_ == null) {
          anyOf_ = java.util.Collections.emptyList();
        } else {
          anyOf_ = null;
          anyOfBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x04000000);
        not_ = null;
        if (notBuilder_ != null) {
          notBuilder_.dispose();
          notBuilder_ = null;
        }
        internalGetMutableProperties().clear();
        additionalProperties_ = null;
        if (additionalPropertiesBuilder_ != null) {
          additionalPropertiesBuilder_.dispose();
          additionalPropertiesBuilder_ = null;
        }
        internalGetMutablePatternProperties().clear();
        internalGetMutableDependencies().clear();
        additionalItems_ = null;
        if (additionalItemsBuilder_ != null) {
          additionalItemsBuilder_.dispose();
          additionalItemsBuilder_ = null;
        }
        internalGetMutableDefinitions().clear();
        externalDocs_ = null;
        if (externalDocsBuilder_ != null) {
          externalDocsBuilder_.dispose();
          externalDocsBuilder_ = null;
        }
        example_ = null;
        if (exampleBuilder_ != null) {
          exampleBuilder_.dispose();
          exampleBuilder_ = null;
        }
        nullable_ = false;
        xKubernetesPreserveUnknownFields_ = false;
        xKubernetesEmbeddedResource_ = false;
        xKubernetesIntOrString_ = false;
        xKubernetesListMapKeys_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        xKubernetesListType_ = "";
        xKubernetesMapType_ = "";
        if (xKubernetesValidationsBuilder_ == null) {
          xKubernetesValidations_ = java.util.Collections.emptyList();
        } else {
          xKubernetesValidations_ = null;
          xKubernetesValidationsBuilder_.clear();
        }
        bitField1_ = (bitField1_ & ~0x00000800);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps result = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        if (bitField1_ != 0) { buildPartial1(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps result) {
        if (enumBuilder_ == null) {
          if (((bitField0_ & 0x00080000) != 0)) {
            enum_ = java.util.Collections.unmodifiableList(enum_);
            bitField0_ = (bitField0_ & ~0x00080000);
          }
          result.enum_ = enum_;
        } else {
          result.enum_ = enumBuilder_.build();
        }
        if (allOfBuilder_ == null) {
          if (((bitField0_ & 0x01000000) != 0)) {
            allOf_ = java.util.Collections.unmodifiableList(allOf_);
            bitField0_ = (bitField0_ & ~0x01000000);
          }
          result.allOf_ = allOf_;
        } else {
          result.allOf_ = allOfBuilder_.build();
        }
        if (oneOfBuilder_ == null) {
          if (((bitField0_ & 0x02000000) != 0)) {
            oneOf_ = java.util.Collections.unmodifiableList(oneOf_);
            bitField0_ = (bitField0_ & ~0x02000000);
          }
          result.oneOf_ = oneOf_;
        } else {
          result.oneOf_ = oneOfBuilder_.build();
        }
        if (anyOfBuilder_ == null) {
          if (((bitField0_ & 0x04000000) != 0)) {
            anyOf_ = java.util.Collections.unmodifiableList(anyOf_);
            bitField0_ = (bitField0_ & ~0x04000000);
          }
          result.anyOf_ = anyOf_;
        } else {
          result.anyOf_ = anyOfBuilder_.build();
        }
        if (xKubernetesValidationsBuilder_ == null) {
          if (((bitField1_ & 0x00000800) != 0)) {
            xKubernetesValidations_ = java.util.Collections.unmodifiableList(xKubernetesValidations_);
            bitField1_ = (bitField1_ & ~0x00000800);
          }
          result.xKubernetesValidations_ = xKubernetesValidations_;
        } else {
          result.xKubernetesValidations_ = xKubernetesValidationsBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.schema_ = schema_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.ref_ = ref_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.description_ = description_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.format_ = format_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.title_ = title_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.default_ = defaultBuilder_ == null
              ? default_
              : defaultBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.maximum_ = maximum_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.exclusiveMaximum_ = exclusiveMaximum_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.minimum_ = minimum_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.exclusiveMinimum_ = exclusiveMinimum_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.maxLength_ = maxLength_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.minLength_ = minLength_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.pattern_ = pattern_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.maxItems_ = maxItems_;
          to_bitField0_ |= 0x00008000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.minItems_ = minItems_;
          to_bitField0_ |= 0x00010000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.uniqueItems_ = uniqueItems_;
          to_bitField0_ |= 0x00020000;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.multipleOf_ = multipleOf_;
          to_bitField0_ |= 0x00040000;
        }
        if (((from_bitField0_ & 0x00100000) != 0)) {
          result.maxProperties_ = maxProperties_;
          to_bitField0_ |= 0x00080000;
        }
        if (((from_bitField0_ & 0x00200000) != 0)) {
          result.minProperties_ = minProperties_;
          to_bitField0_ |= 0x00100000;
        }
        if (((from_bitField0_ & 0x00400000) != 0)) {
          required_.makeImmutable();
          result.required_ = required_;
        }
        if (((from_bitField0_ & 0x00800000) != 0)) {
          result.items_ = itemsBuilder_ == null
              ? items_
              : itemsBuilder_.build();
          to_bitField0_ |= 0x00200000;
        }
        if (((from_bitField0_ & 0x08000000) != 0)) {
          result.not_ = notBuilder_ == null
              ? not_
              : notBuilder_.build();
          to_bitField0_ |= 0x00400000;
        }
        if (((from_bitField0_ & 0x10000000) != 0)) {
          result.properties_ = internalGetProperties().build(PropertiesDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x20000000) != 0)) {
          result.additionalProperties_ = additionalPropertiesBuilder_ == null
              ? additionalProperties_
              : additionalPropertiesBuilder_.build();
          to_bitField0_ |= 0x00800000;
        }
        if (((from_bitField0_ & 0x40000000) != 0)) {
          result.patternProperties_ = internalGetPatternProperties().build(PatternPropertiesDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField0_ & 0x80000000) != 0)) {
          result.dependencies_ = internalGetDependencies().build(DependenciesDefaultEntryHolder.defaultEntry);
        }
        result.bitField0_ |= to_bitField0_;
      }

      private void buildPartial1(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps result) {
        int from_bitField1_ = bitField1_;
        int to_bitField0_ = 0;
        if (((from_bitField1_ & 0x00000001) != 0)) {
          result.additionalItems_ = additionalItemsBuilder_ == null
              ? additionalItems_
              : additionalItemsBuilder_.build();
          to_bitField0_ |= 0x01000000;
        }
        if (((from_bitField1_ & 0x00000002) != 0)) {
          result.definitions_ = internalGetDefinitions().build(DefinitionsDefaultEntryHolder.defaultEntry);
        }
        if (((from_bitField1_ & 0x00000004) != 0)) {
          result.externalDocs_ = externalDocsBuilder_ == null
              ? externalDocs_
              : externalDocsBuilder_.build();
          to_bitField0_ |= 0x02000000;
        }
        if (((from_bitField1_ & 0x00000008) != 0)) {
          result.example_ = exampleBuilder_ == null
              ? example_
              : exampleBuilder_.build();
          to_bitField0_ |= 0x04000000;
        }
        if (((from_bitField1_ & 0x00000010) != 0)) {
          result.nullable_ = nullable_;
          to_bitField0_ |= 0x08000000;
        }
        if (((from_bitField1_ & 0x00000020) != 0)) {
          result.xKubernetesPreserveUnknownFields_ = xKubernetesPreserveUnknownFields_;
          to_bitField0_ |= 0x10000000;
        }
        if (((from_bitField1_ & 0x00000040) != 0)) {
          result.xKubernetesEmbeddedResource_ = xKubernetesEmbeddedResource_;
          to_bitField0_ |= 0x20000000;
        }
        if (((from_bitField1_ & 0x00000080) != 0)) {
          result.xKubernetesIntOrString_ = xKubernetesIntOrString_;
          to_bitField0_ |= 0x40000000;
        }
        if (((from_bitField1_ & 0x00000100) != 0)) {
          xKubernetesListMapKeys_.makeImmutable();
          result.xKubernetesListMapKeys_ = xKubernetesListMapKeys_;
        }
        if (((from_bitField1_ & 0x00000200) != 0)) {
          result.xKubernetesListType_ = xKubernetesListType_;
          to_bitField0_ |= 0x80000000;
        }
        int to_bitField1_ = 0;
        if (((from_bitField1_ & 0x00000400) != 0)) {
          result.xKubernetesMapType_ = xKubernetesMapType_;
          to_bitField1_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
        result.bitField1_ |= to_bitField1_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance()) return this;
        if (other.hasId()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasSchema()) {
          schema_ = other.schema_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasRef()) {
          ref_ = other.ref_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasDescription()) {
          description_ = other.description_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasType()) {
          type_ = other.type_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasFormat()) {
          format_ = other.format_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasTitle()) {
          title_ = other.title_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (other.hasDefault()) {
          mergeDefault(other.getDefault());
        }
        if (other.hasMaximum()) {
          setMaximum(other.getMaximum());
        }
        if (other.hasExclusiveMaximum()) {
          setExclusiveMaximum(other.getExclusiveMaximum());
        }
        if (other.hasMinimum()) {
          setMinimum(other.getMinimum());
        }
        if (other.hasExclusiveMinimum()) {
          setExclusiveMinimum(other.getExclusiveMinimum());
        }
        if (other.hasMaxLength()) {
          setMaxLength(other.getMaxLength());
        }
        if (other.hasMinLength()) {
          setMinLength(other.getMinLength());
        }
        if (other.hasPattern()) {
          pattern_ = other.pattern_;
          bitField0_ |= 0x00004000;
          onChanged();
        }
        if (other.hasMaxItems()) {
          setMaxItems(other.getMaxItems());
        }
        if (other.hasMinItems()) {
          setMinItems(other.getMinItems());
        }
        if (other.hasUniqueItems()) {
          setUniqueItems(other.getUniqueItems());
        }
        if (other.hasMultipleOf()) {
          setMultipleOf(other.getMultipleOf());
        }
        if (enumBuilder_ == null) {
          if (!other.enum_.isEmpty()) {
            if (enum_.isEmpty()) {
              enum_ = other.enum_;
              bitField0_ = (bitField0_ & ~0x00080000);
            } else {
              ensureEnumIsMutable();
              enum_.addAll(other.enum_);
            }
            onChanged();
          }
        } else {
          if (!other.enum_.isEmpty()) {
            if (enumBuilder_.isEmpty()) {
              enumBuilder_.dispose();
              enumBuilder_ = null;
              enum_ = other.enum_;
              bitField0_ = (bitField0_ & ~0x00080000);
              enumBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getEnumFieldBuilder() : null;
            } else {
              enumBuilder_.addAllMessages(other.enum_);
            }
          }
        }
        if (other.hasMaxProperties()) {
          setMaxProperties(other.getMaxProperties());
        }
        if (other.hasMinProperties()) {
          setMinProperties(other.getMinProperties());
        }
        if (!other.required_.isEmpty()) {
          if (required_.isEmpty()) {
            required_ = other.required_;
            bitField0_ |= 0x00400000;
          } else {
            ensureRequiredIsMutable();
            required_.addAll(other.required_);
          }
          onChanged();
        }
        if (other.hasItems()) {
          mergeItems(other.getItems());
        }
        if (allOfBuilder_ == null) {
          if (!other.allOf_.isEmpty()) {
            if (allOf_.isEmpty()) {
              allOf_ = other.allOf_;
              bitField0_ = (bitField0_ & ~0x01000000);
            } else {
              ensureAllOfIsMutable();
              allOf_.addAll(other.allOf_);
            }
            onChanged();
          }
        } else {
          if (!other.allOf_.isEmpty()) {
            if (allOfBuilder_.isEmpty()) {
              allOfBuilder_.dispose();
              allOfBuilder_ = null;
              allOf_ = other.allOf_;
              bitField0_ = (bitField0_ & ~0x01000000);
              allOfBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAllOfFieldBuilder() : null;
            } else {
              allOfBuilder_.addAllMessages(other.allOf_);
            }
          }
        }
        if (oneOfBuilder_ == null) {
          if (!other.oneOf_.isEmpty()) {
            if (oneOf_.isEmpty()) {
              oneOf_ = other.oneOf_;
              bitField0_ = (bitField0_ & ~0x02000000);
            } else {
              ensureOneOfIsMutable();
              oneOf_.addAll(other.oneOf_);
            }
            onChanged();
          }
        } else {
          if (!other.oneOf_.isEmpty()) {
            if (oneOfBuilder_.isEmpty()) {
              oneOfBuilder_.dispose();
              oneOfBuilder_ = null;
              oneOf_ = other.oneOf_;
              bitField0_ = (bitField0_ & ~0x02000000);
              oneOfBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getOneOfFieldBuilder() : null;
            } else {
              oneOfBuilder_.addAllMessages(other.oneOf_);
            }
          }
        }
        if (anyOfBuilder_ == null) {
          if (!other.anyOf_.isEmpty()) {
            if (anyOf_.isEmpty()) {
              anyOf_ = other.anyOf_;
              bitField0_ = (bitField0_ & ~0x04000000);
            } else {
              ensureAnyOfIsMutable();
              anyOf_.addAll(other.anyOf_);
            }
            onChanged();
          }
        } else {
          if (!other.anyOf_.isEmpty()) {
            if (anyOfBuilder_.isEmpty()) {
              anyOfBuilder_.dispose();
              anyOfBuilder_ = null;
              anyOf_ = other.anyOf_;
              bitField0_ = (bitField0_ & ~0x04000000);
              anyOfBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getAnyOfFieldBuilder() : null;
            } else {
              anyOfBuilder_.addAllMessages(other.anyOf_);
            }
          }
        }
        if (other.hasNot()) {
          mergeNot(other.getNot());
        }
        internalGetMutableProperties().mergeFrom(
            other.internalGetProperties());
        bitField0_ |= 0x10000000;
        if (other.hasAdditionalProperties()) {
          mergeAdditionalProperties(other.getAdditionalProperties());
        }
        internalGetMutablePatternProperties().mergeFrom(
            other.internalGetPatternProperties());
        bitField0_ |= 0x40000000;
        internalGetMutableDependencies().mergeFrom(
            other.internalGetDependencies());
        bitField0_ |= 0x80000000;
        if (other.hasAdditionalItems()) {
          mergeAdditionalItems(other.getAdditionalItems());
        }
        internalGetMutableDefinitions().mergeFrom(
            other.internalGetDefinitions());
        bitField1_ |= 0x00000002;
        if (other.hasExternalDocs()) {
          mergeExternalDocs(other.getExternalDocs());
        }
        if (other.hasExample()) {
          mergeExample(other.getExample());
        }
        if (other.hasNullable()) {
          setNullable(other.getNullable());
        }
        if (other.hasXKubernetesPreserveUnknownFields()) {
          setXKubernetesPreserveUnknownFields(other.getXKubernetesPreserveUnknownFields());
        }
        if (other.hasXKubernetesEmbeddedResource()) {
          setXKubernetesEmbeddedResource(other.getXKubernetesEmbeddedResource());
        }
        if (other.hasXKubernetesIntOrString()) {
          setXKubernetesIntOrString(other.getXKubernetesIntOrString());
        }
        if (!other.xKubernetesListMapKeys_.isEmpty()) {
          if (xKubernetesListMapKeys_.isEmpty()) {
            xKubernetesListMapKeys_ = other.xKubernetesListMapKeys_;
            bitField1_ |= 0x00000100;
          } else {
            ensureXKubernetesListMapKeysIsMutable();
            xKubernetesListMapKeys_.addAll(other.xKubernetesListMapKeys_);
          }
          onChanged();
        }
        if (other.hasXKubernetesListType()) {
          xKubernetesListType_ = other.xKubernetesListType_;
          bitField1_ |= 0x00000200;
          onChanged();
        }
        if (other.hasXKubernetesMapType()) {
          xKubernetesMapType_ = other.xKubernetesMapType_;
          bitField1_ |= 0x00000400;
          onChanged();
        }
        if (xKubernetesValidationsBuilder_ == null) {
          if (!other.xKubernetesValidations_.isEmpty()) {
            if (xKubernetesValidations_.isEmpty()) {
              xKubernetesValidations_ = other.xKubernetesValidations_;
              bitField1_ = (bitField1_ & ~0x00000800);
            } else {
              ensureXKubernetesValidationsIsMutable();
              xKubernetesValidations_.addAll(other.xKubernetesValidations_);
            }
            onChanged();
          }
        } else {
          if (!other.xKubernetesValidations_.isEmpty()) {
            if (xKubernetesValidationsBuilder_.isEmpty()) {
              xKubernetesValidationsBuilder_.dispose();
              xKubernetesValidationsBuilder_ = null;
              xKubernetesValidations_ = other.xKubernetesValidations_;
              bitField1_ = (bitField1_ & ~0x00000800);
              xKubernetesValidationsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getXKubernetesValidationsFieldBuilder() : null;
            } else {
              xKubernetesValidationsBuilder_.addAllMessages(other.xKubernetesValidations_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                id_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                schema_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                ref_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                description_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                type_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                format_ = input.readBytes();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                title_ = input.readBytes();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getDefaultFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 73: {
                maximum_ = input.readDouble();
                bitField0_ |= 0x00000100;
                break;
              } // case 73
              case 80: {
                exclusiveMaximum_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              case 89: {
                minimum_ = input.readDouble();
                bitField0_ |= 0x00000400;
                break;
              } // case 89
              case 96: {
                exclusiveMinimum_ = input.readBool();
                bitField0_ |= 0x00000800;
                break;
              } // case 96
              case 104: {
                maxLength_ = input.readInt64();
                bitField0_ |= 0x00001000;
                break;
              } // case 104
              case 112: {
                minLength_ = input.readInt64();
                bitField0_ |= 0x00002000;
                break;
              } // case 112
              case 122: {
                pattern_ = input.readBytes();
                bitField0_ |= 0x00004000;
                break;
              } // case 122
              case 128: {
                maxItems_ = input.readInt64();
                bitField0_ |= 0x00008000;
                break;
              } // case 128
              case 136: {
                minItems_ = input.readInt64();
                bitField0_ |= 0x00010000;
                break;
              } // case 136
              case 144: {
                uniqueItems_ = input.readBool();
                bitField0_ |= 0x00020000;
                break;
              } // case 144
              case 153: {
                multipleOf_ = input.readDouble();
                bitField0_ |= 0x00040000;
                break;
              } // case 153
              case 162: {
                io.kubernetes.client.proto.V1beta1Apiextensions.JSON m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.JSON.parser(),
                        extensionRegistry);
                if (enumBuilder_ == null) {
                  ensureEnumIsMutable();
                  enum_.add(m);
                } else {
                  enumBuilder_.addMessage(m);
                }
                break;
              } // case 162
              case 168: {
                maxProperties_ = input.readInt64();
                bitField0_ |= 0x00100000;
                break;
              } // case 168
              case 176: {
                minProperties_ = input.readInt64();
                bitField0_ |= 0x00200000;
                break;
              } // case 176
              case 186: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureRequiredIsMutable();
                required_.add(bs);
                break;
              } // case 186
              case 194: {
                input.readMessage(
                    getItemsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00800000;
                break;
              } // case 194
              case 202: {
                io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.parser(),
                        extensionRegistry);
                if (allOfBuilder_ == null) {
                  ensureAllOfIsMutable();
                  allOf_.add(m);
                } else {
                  allOfBuilder_.addMessage(m);
                }
                break;
              } // case 202
              case 210: {
                io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.parser(),
                        extensionRegistry);
                if (oneOfBuilder_ == null) {
                  ensureOneOfIsMutable();
                  oneOf_.add(m);
                } else {
                  oneOfBuilder_.addMessage(m);
                }
                break;
              } // case 210
              case 218: {
                io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.parser(),
                        extensionRegistry);
                if (anyOfBuilder_ == null) {
                  ensureAnyOfIsMutable();
                  anyOf_.add(m);
                } else {
                  anyOfBuilder_.addMessage(m);
                }
                break;
              } // case 218
              case 226: {
                input.readMessage(
                    getNotFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x08000000;
                break;
              } // case 226
              case 234: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
                properties__ = input.readMessage(
                    PropertiesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableProperties().ensureBuilderMap().put(
                    properties__.getKey(), properties__.getValue());
                bitField0_ |= 0x10000000;
                break;
              } // case 234
              case 242: {
                input.readMessage(
                    getAdditionalPropertiesFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x20000000;
                break;
              } // case 242
              case 250: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
                patternProperties__ = input.readMessage(
                    PatternPropertiesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutablePatternProperties().ensureBuilderMap().put(
                    patternProperties__.getKey(), patternProperties__.getValue());
                bitField0_ |= 0x40000000;
                break;
              } // case 250
              case 258: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray>
                dependencies__ = input.readMessage(
                    DependenciesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableDependencies().ensureBuilderMap().put(
                    dependencies__.getKey(), dependencies__.getValue());
                bitField0_ |= 0x80000000;
                break;
              } // case 258
              case 266: {
                input.readMessage(
                    getAdditionalItemsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00000001;
                break;
              } // case 266
              case 274: {
                com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
                definitions__ = input.readMessage(
                    DefinitionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableDefinitions().ensureBuilderMap().put(
                    definitions__.getKey(), definitions__.getValue());
                bitField1_ |= 0x00000002;
                break;
              } // case 274
              case 282: {
                input.readMessage(
                    getExternalDocsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00000004;
                break;
              } // case 282
              case 290: {
                input.readMessage(
                    getExampleFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField1_ |= 0x00000008;
                break;
              } // case 290
              case 296: {
                nullable_ = input.readBool();
                bitField1_ |= 0x00000010;
                break;
              } // case 296
              case 304: {
                xKubernetesPreserveUnknownFields_ = input.readBool();
                bitField1_ |= 0x00000020;
                break;
              } // case 304
              case 312: {
                xKubernetesEmbeddedResource_ = input.readBool();
                bitField1_ |= 0x00000040;
                break;
              } // case 312
              case 320: {
                xKubernetesIntOrString_ = input.readBool();
                bitField1_ |= 0x00000080;
                break;
              } // case 320
              case 330: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureXKubernetesListMapKeysIsMutable();
                xKubernetesListMapKeys_.add(bs);
                break;
              } // case 330
              case 338: {
                xKubernetesListType_ = input.readBytes();
                bitField1_ |= 0x00000200;
                break;
              } // case 338
              case 346: {
                xKubernetesMapType_ = input.readBytes();
                bitField1_ |= 0x00000400;
                break;
              } // case 346
              case 354: {
                io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule m =
                    input.readMessage(
                        io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.parser(),
                        extensionRegistry);
                if (xKubernetesValidationsBuilder_ == null) {
                  ensureXKubernetesValidationsIsMutable();
                  xKubernetesValidations_.add(m);
                } else {
                  xKubernetesValidationsBuilder_.addMessage(m);
                }
                break;
              } // case 354
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;
      private int bitField1_;

      private java.lang.Object id_ = "";
      /**
       * <code>optional string id = 1;</code>
       * @return Whether the id field is set.
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            id_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>optional string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object schema_ = "";
      /**
       * <code>optional string schema = 2;</code>
       * @return Whether the schema field is set.
       */
      public boolean hasSchema() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string schema = 2;</code>
       * @return The schema.
       */
      public java.lang.String getSchema() {
        java.lang.Object ref = schema_;
        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()) {
            schema_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string schema = 2;</code>
       * @return The bytes for schema.
       */
      public com.google.protobuf.ByteString
          getSchemaBytes() {
        java.lang.Object ref = schema_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          schema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string schema = 2;</code>
       * @param value The schema to set.
       * @return This builder for chaining.
       */
      public Builder setSchema(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        schema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional string schema = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSchema() {
        schema_ = getDefaultInstance().getSchema();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>optional string schema = 2;</code>
       * @param value The bytes for schema to set.
       * @return This builder for chaining.
       */
      public Builder setSchemaBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        schema_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object ref_ = "";
      /**
       * <code>optional string ref = 3;</code>
       * @return Whether the ref field is set.
       */
      public boolean hasRef() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional string ref = 3;</code>
       * @return The ref.
       */
      public java.lang.String getRef() {
        java.lang.Object ref = ref_;
        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()) {
            ref_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string ref = 3;</code>
       * @return The bytes for ref.
       */
      public com.google.protobuf.ByteString
          getRefBytes() {
        java.lang.Object ref = ref_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ref_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string ref = 3;</code>
       * @param value The ref to set.
       * @return This builder for chaining.
       */
      public Builder setRef(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ref_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional string ref = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRef() {
        ref_ = getDefaultInstance().getRef();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>optional string ref = 3;</code>
       * @param value The bytes for ref to set.
       * @return This builder for chaining.
       */
      public Builder setRefBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ref_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * <code>optional string description = 4;</code>
       * @return Whether the description field is set.
       */
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional string description = 4;</code>
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            description_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string description = 4;</code>
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string description = 4;</code>
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional string description = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>optional string description = 4;</code>
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <code>optional string type = 5;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional string type = 5;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string type = 5;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string type = 5;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>optional string type = 5;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object format_ = "";
      /**
       * <pre>
       * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
       *
       * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
       * - uri: an URI as parsed by Golang net/url.ParseRequestURI
       * - email: an email address as parsed by Golang net/mail.ParseAddress
       * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
       * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
       * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
       * - cidr: a CIDR as parsed by Golang net.ParseCIDR
       * - mac: a MAC address as parsed by Golang net.ParseMAC
       * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
       * - isbn10: an ISBN10 number string like "0321751043"
       * - isbn13: an ISBN13 number string like "978-0321751041"
       * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
       * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
       * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
       * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
       * - byte: base64 encoded binary data
       * - password: any kind of string
       * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
       * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
       * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
       * </pre>
       *
       * <code>optional string format = 6;</code>
       * @return Whether the format field is set.
       */
      public boolean hasFormat() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
       *
       * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
       * - uri: an URI as parsed by Golang net/url.ParseRequestURI
       * - email: an email address as parsed by Golang net/mail.ParseAddress
       * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
       * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
       * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
       * - cidr: a CIDR as parsed by Golang net.ParseCIDR
       * - mac: a MAC address as parsed by Golang net.ParseMAC
       * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
       * - isbn10: an ISBN10 number string like "0321751043"
       * - isbn13: an ISBN13 number string like "978-0321751041"
       * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
       * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
       * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
       * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
       * - byte: base64 encoded binary data
       * - password: any kind of string
       * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
       * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
       * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
       * </pre>
       *
       * <code>optional string format = 6;</code>
       * @return The format.
       */
      public java.lang.String getFormat() {
        java.lang.Object ref = format_;
        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()) {
            format_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
       *
       * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
       * - uri: an URI as parsed by Golang net/url.ParseRequestURI
       * - email: an email address as parsed by Golang net/mail.ParseAddress
       * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
       * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
       * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
       * - cidr: a CIDR as parsed by Golang net.ParseCIDR
       * - mac: a MAC address as parsed by Golang net.ParseMAC
       * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
       * - isbn10: an ISBN10 number string like "0321751043"
       * - isbn13: an ISBN13 number string like "978-0321751041"
       * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
       * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
       * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
       * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
       * - byte: base64 encoded binary data
       * - password: any kind of string
       * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
       * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
       * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
       * </pre>
       *
       * <code>optional string format = 6;</code>
       * @return The bytes for format.
       */
      public com.google.protobuf.ByteString
          getFormatBytes() {
        java.lang.Object ref = format_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          format_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
       *
       * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
       * - uri: an URI as parsed by Golang net/url.ParseRequestURI
       * - email: an email address as parsed by Golang net/mail.ParseAddress
       * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
       * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
       * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
       * - cidr: a CIDR as parsed by Golang net.ParseCIDR
       * - mac: a MAC address as parsed by Golang net.ParseMAC
       * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
       * - isbn10: an ISBN10 number string like "0321751043"
       * - isbn13: an ISBN13 number string like "978-0321751041"
       * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
       * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
       * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
       * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
       * - byte: base64 encoded binary data
       * - password: any kind of string
       * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
       * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
       * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
       * </pre>
       *
       * <code>optional string format = 6;</code>
       * @param value The format to set.
       * @return This builder for chaining.
       */
      public Builder setFormat(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        format_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
       *
       * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
       * - uri: an URI as parsed by Golang net/url.ParseRequestURI
       * - email: an email address as parsed by Golang net/mail.ParseAddress
       * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
       * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
       * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
       * - cidr: a CIDR as parsed by Golang net.ParseCIDR
       * - mac: a MAC address as parsed by Golang net.ParseMAC
       * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
       * - isbn10: an ISBN10 number string like "0321751043"
       * - isbn13: an ISBN13 number string like "978-0321751041"
       * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
       * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
       * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
       * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
       * - byte: base64 encoded binary data
       * - password: any kind of string
       * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
       * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
       * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
       * </pre>
       *
       * <code>optional string format = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearFormat() {
        format_ = getDefaultInstance().getFormat();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
       *
       * - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
       * - uri: an URI as parsed by Golang net/url.ParseRequestURI
       * - email: an email address as parsed by Golang net/mail.ParseAddress
       * - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
       * - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
       * - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
       * - cidr: a CIDR as parsed by Golang net.ParseCIDR
       * - mac: a MAC address as parsed by Golang net.ParseMAC
       * - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
       * - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
       * - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
       * - isbn10: an ISBN10 number string like "0321751043"
       * - isbn13: an ISBN13 number string like "978-0321751041"
       * - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35&#92;&#92;d{3})&#92;&#92;d{11})$ with any non digit characters mixed in
       * - ssn: a U.S. social security number following the regex ^&#92;&#92;d{3}[- ]?&#92;&#92;d{2}[- ]?&#92;&#92;d{4}$
       * - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
       * - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
       * - byte: base64 encoded binary data
       * - password: any kind of string
       * - date: a date string like "2006-01-02" as defined by full-date in RFC3339
       * - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
       * - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
       * </pre>
       *
       * <code>optional string format = 6;</code>
       * @param value The bytes for format to set.
       * @return This builder for chaining.
       */
      public Builder setFormatBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        format_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object title_ = "";
      /**
       * <code>optional string title = 7;</code>
       * @return Whether the title field is set.
       */
      public boolean hasTitle() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional string title = 7;</code>
       * @return The title.
       */
      public java.lang.String getTitle() {
        java.lang.Object ref = title_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            title_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string title = 7;</code>
       * @return The bytes for title.
       */
      public com.google.protobuf.ByteString
          getTitleBytes() {
        java.lang.Object ref = title_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          title_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string title = 7;</code>
       * @param value The title to set.
       * @return This builder for chaining.
       */
      public Builder setTitle(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        title_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>optional string title = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearTitle() {
        title_ = getDefaultInstance().getTitle();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>optional string title = 7;</code>
       * @param value The bytes for title to set.
       * @return This builder for chaining.
       */
      public Builder setTitleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        title_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSON default_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> defaultBuilder_;
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       * @return Whether the default field is set.
       */
      public boolean hasDefault() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       * @return The default.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getDefault() {
        if (defaultBuilder_ == null) {
          return default_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : default_;
        } else {
          return defaultBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       */
      public Builder setDefault(io.kubernetes.client.proto.V1beta1Apiextensions.JSON value) {
        if (defaultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          default_ = value;
        } else {
          defaultBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       */
      public Builder setDefault(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder builderForValue) {
        if (defaultBuilder_ == null) {
          default_ = builderForValue.build();
        } else {
          defaultBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       */
      public Builder mergeDefault(io.kubernetes.client.proto.V1beta1Apiextensions.JSON value) {
        if (defaultBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            default_ != null &&
            default_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance()) {
            getDefaultBuilder().mergeFrom(value);
          } else {
            default_ = value;
          }
        } else {
          defaultBuilder_.mergeFrom(value);
        }
        if (default_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       */
      public Builder clearDefault() {
        bitField0_ = (bitField0_ & ~0x00000080);
        default_ = null;
        if (defaultBuilder_ != null) {
          defaultBuilder_.dispose();
          defaultBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder getDefaultBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getDefaultFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getDefaultOrBuilder() {
        if (defaultBuilder_ != null) {
          return defaultBuilder_.getMessageOrBuilder();
        } else {
          return default_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : default_;
        }
      }
      /**
       * <pre>
       * default is a default value for undefined object fields.
       * Defaulting is a beta feature under the CustomResourceDefaulting feature gate.
       * CustomResourceDefinitions with defaults must be created using the v1 (or newer) CustomResourceDefinition API.
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON default = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> 
          getDefaultFieldBuilder() {
        if (defaultBuilder_ == null) {
          defaultBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder>(
                  getDefault(),
                  getParentForChildren(),
                  isClean());
          default_ = null;
        }
        return defaultBuilder_;
      }

      private double maximum_ ;
      /**
       * <code>optional double maximum = 9;</code>
       * @return Whether the maximum field is set.
       */
      @java.lang.Override
      public boolean hasMaximum() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional double maximum = 9;</code>
       * @return The maximum.
       */
      @java.lang.Override
      public double getMaximum() {
        return maximum_;
      }
      /**
       * <code>optional double maximum = 9;</code>
       * @param value The maximum to set.
       * @return This builder for chaining.
       */
      public Builder setMaximum(double value) {

        maximum_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional double maximum = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaximum() {
        bitField0_ = (bitField0_ & ~0x00000100);
        maximum_ = 0D;
        onChanged();
        return this;
      }

      private boolean exclusiveMaximum_ ;
      /**
       * <code>optional bool exclusiveMaximum = 10;</code>
       * @return Whether the exclusiveMaximum field is set.
       */
      @java.lang.Override
      public boolean hasExclusiveMaximum() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional bool exclusiveMaximum = 10;</code>
       * @return The exclusiveMaximum.
       */
      @java.lang.Override
      public boolean getExclusiveMaximum() {
        return exclusiveMaximum_;
      }
      /**
       * <code>optional bool exclusiveMaximum = 10;</code>
       * @param value The exclusiveMaximum to set.
       * @return This builder for chaining.
       */
      public Builder setExclusiveMaximum(boolean value) {

        exclusiveMaximum_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool exclusiveMaximum = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearExclusiveMaximum() {
        bitField0_ = (bitField0_ & ~0x00000200);
        exclusiveMaximum_ = false;
        onChanged();
        return this;
      }

      private double minimum_ ;
      /**
       * <code>optional double minimum = 11;</code>
       * @return Whether the minimum field is set.
       */
      @java.lang.Override
      public boolean hasMinimum() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional double minimum = 11;</code>
       * @return The minimum.
       */
      @java.lang.Override
      public double getMinimum() {
        return minimum_;
      }
      /**
       * <code>optional double minimum = 11;</code>
       * @param value The minimum to set.
       * @return This builder for chaining.
       */
      public Builder setMinimum(double value) {

        minimum_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional double minimum = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinimum() {
        bitField0_ = (bitField0_ & ~0x00000400);
        minimum_ = 0D;
        onChanged();
        return this;
      }

      private boolean exclusiveMinimum_ ;
      /**
       * <code>optional bool exclusiveMinimum = 12;</code>
       * @return Whether the exclusiveMinimum field is set.
       */
      @java.lang.Override
      public boolean hasExclusiveMinimum() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional bool exclusiveMinimum = 12;</code>
       * @return The exclusiveMinimum.
       */
      @java.lang.Override
      public boolean getExclusiveMinimum() {
        return exclusiveMinimum_;
      }
      /**
       * <code>optional bool exclusiveMinimum = 12;</code>
       * @param value The exclusiveMinimum to set.
       * @return This builder for chaining.
       */
      public Builder setExclusiveMinimum(boolean value) {

        exclusiveMinimum_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool exclusiveMinimum = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearExclusiveMinimum() {
        bitField0_ = (bitField0_ & ~0x00000800);
        exclusiveMinimum_ = false;
        onChanged();
        return this;
      }

      private long maxLength_ ;
      /**
       * <code>optional int64 maxLength = 13;</code>
       * @return Whether the maxLength field is set.
       */
      @java.lang.Override
      public boolean hasMaxLength() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional int64 maxLength = 13;</code>
       * @return The maxLength.
       */
      @java.lang.Override
      public long getMaxLength() {
        return maxLength_;
      }
      /**
       * <code>optional int64 maxLength = 13;</code>
       * @param value The maxLength to set.
       * @return This builder for chaining.
       */
      public Builder setMaxLength(long value) {

        maxLength_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 maxLength = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxLength() {
        bitField0_ = (bitField0_ & ~0x00001000);
        maxLength_ = 0L;
        onChanged();
        return this;
      }

      private long minLength_ ;
      /**
       * <code>optional int64 minLength = 14;</code>
       * @return Whether the minLength field is set.
       */
      @java.lang.Override
      public boolean hasMinLength() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional int64 minLength = 14;</code>
       * @return The minLength.
       */
      @java.lang.Override
      public long getMinLength() {
        return minLength_;
      }
      /**
       * <code>optional int64 minLength = 14;</code>
       * @param value The minLength to set.
       * @return This builder for chaining.
       */
      public Builder setMinLength(long value) {

        minLength_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 minLength = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinLength() {
        bitField0_ = (bitField0_ & ~0x00002000);
        minLength_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object pattern_ = "";
      /**
       * <code>optional string pattern = 15;</code>
       * @return Whether the pattern field is set.
       */
      public boolean hasPattern() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional string pattern = 15;</code>
       * @return The pattern.
       */
      public java.lang.String getPattern() {
        java.lang.Object ref = pattern_;
        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()) {
            pattern_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string pattern = 15;</code>
       * @return The bytes for pattern.
       */
      public com.google.protobuf.ByteString
          getPatternBytes() {
        java.lang.Object ref = pattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string pattern = 15;</code>
       * @param value The pattern to set.
       * @return This builder for chaining.
       */
      public Builder setPattern(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        pattern_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>optional string pattern = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearPattern() {
        pattern_ = getDefaultInstance().getPattern();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }
      /**
       * <code>optional string pattern = 15;</code>
       * @param value The bytes for pattern to set.
       * @return This builder for chaining.
       */
      public Builder setPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        pattern_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      private long maxItems_ ;
      /**
       * <code>optional int64 maxItems = 16;</code>
       * @return Whether the maxItems field is set.
       */
      @java.lang.Override
      public boolean hasMaxItems() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>optional int64 maxItems = 16;</code>
       * @return The maxItems.
       */
      @java.lang.Override
      public long getMaxItems() {
        return maxItems_;
      }
      /**
       * <code>optional int64 maxItems = 16;</code>
       * @param value The maxItems to set.
       * @return This builder for chaining.
       */
      public Builder setMaxItems(long value) {

        maxItems_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 maxItems = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxItems() {
        bitField0_ = (bitField0_ & ~0x00008000);
        maxItems_ = 0L;
        onChanged();
        return this;
      }

      private long minItems_ ;
      /**
       * <code>optional int64 minItems = 17;</code>
       * @return Whether the minItems field is set.
       */
      @java.lang.Override
      public boolean hasMinItems() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <code>optional int64 minItems = 17;</code>
       * @return The minItems.
       */
      @java.lang.Override
      public long getMinItems() {
        return minItems_;
      }
      /**
       * <code>optional int64 minItems = 17;</code>
       * @param value The minItems to set.
       * @return This builder for chaining.
       */
      public Builder setMinItems(long value) {

        minItems_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 minItems = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinItems() {
        bitField0_ = (bitField0_ & ~0x00010000);
        minItems_ = 0L;
        onChanged();
        return this;
      }

      private boolean uniqueItems_ ;
      /**
       * <code>optional bool uniqueItems = 18;</code>
       * @return Whether the uniqueItems field is set.
       */
      @java.lang.Override
      public boolean hasUniqueItems() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <code>optional bool uniqueItems = 18;</code>
       * @return The uniqueItems.
       */
      @java.lang.Override
      public boolean getUniqueItems() {
        return uniqueItems_;
      }
      /**
       * <code>optional bool uniqueItems = 18;</code>
       * @param value The uniqueItems to set.
       * @return This builder for chaining.
       */
      public Builder setUniqueItems(boolean value) {

        uniqueItems_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool uniqueItems = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearUniqueItems() {
        bitField0_ = (bitField0_ & ~0x00020000);
        uniqueItems_ = false;
        onChanged();
        return this;
      }

      private double multipleOf_ ;
      /**
       * <code>optional double multipleOf = 19;</code>
       * @return Whether the multipleOf field is set.
       */
      @java.lang.Override
      public boolean hasMultipleOf() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <code>optional double multipleOf = 19;</code>
       * @return The multipleOf.
       */
      @java.lang.Override
      public double getMultipleOf() {
        return multipleOf_;
      }
      /**
       * <code>optional double multipleOf = 19;</code>
       * @param value The multipleOf to set.
       * @return This builder for chaining.
       */
      public Builder setMultipleOf(double value) {

        multipleOf_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <code>optional double multipleOf = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearMultipleOf() {
        bitField0_ = (bitField0_ & ~0x00040000);
        multipleOf_ = 0D;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSON> enum_ =
        java.util.Collections.emptyList();
      private void ensureEnumIsMutable() {
        if (!((bitField0_ & 0x00080000) != 0)) {
          enum_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.JSON>(enum_);
          bitField0_ |= 0x00080000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> enumBuilder_;

      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSON> getEnumList() {
        if (enumBuilder_ == null) {
          return java.util.Collections.unmodifiableList(enum_);
        } else {
          return enumBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public int getEnumCount() {
        if (enumBuilder_ == null) {
          return enum_.size();
        } else {
          return enumBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getEnum(int index) {
        if (enumBuilder_ == null) {
          return enum_.get(index);
        } else {
          return enumBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder setEnum(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSON value) {
        if (enumBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumIsMutable();
          enum_.set(index, value);
          onChanged();
        } else {
          enumBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder setEnum(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder builderForValue) {
        if (enumBuilder_ == null) {
          ensureEnumIsMutable();
          enum_.set(index, builderForValue.build());
          onChanged();
        } else {
          enumBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder addEnum(io.kubernetes.client.proto.V1beta1Apiextensions.JSON value) {
        if (enumBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumIsMutable();
          enum_.add(value);
          onChanged();
        } else {
          enumBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder addEnum(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSON value) {
        if (enumBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEnumIsMutable();
          enum_.add(index, value);
          onChanged();
        } else {
          enumBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder addEnum(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder builderForValue) {
        if (enumBuilder_ == null) {
          ensureEnumIsMutable();
          enum_.add(builderForValue.build());
          onChanged();
        } else {
          enumBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder addEnum(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder builderForValue) {
        if (enumBuilder_ == null) {
          ensureEnumIsMutable();
          enum_.add(index, builderForValue.build());
          onChanged();
        } else {
          enumBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder addAllEnum(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSON> values) {
        if (enumBuilder_ == null) {
          ensureEnumIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, enum_);
          onChanged();
        } else {
          enumBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder clearEnum() {
        if (enumBuilder_ == null) {
          enum_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00080000);
          onChanged();
        } else {
          enumBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public Builder removeEnum(int index) {
        if (enumBuilder_ == null) {
          ensureEnumIsMutable();
          enum_.remove(index);
          onChanged();
        } else {
          enumBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder getEnumBuilder(
          int index) {
        return getEnumFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getEnumOrBuilder(
          int index) {
        if (enumBuilder_ == null) {
          return enum_.get(index);  } else {
          return enumBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> 
           getEnumOrBuilderList() {
        if (enumBuilder_ != null) {
          return enumBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(enum_);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder addEnumBuilder() {
        return getEnumFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder addEnumBuilder(
          int index) {
        return getEnumFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON enum = 20;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder> 
           getEnumBuilderList() {
        return getEnumFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> 
          getEnumFieldBuilder() {
        if (enumBuilder_ == null) {
          enumBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder>(
                  enum_,
                  ((bitField0_ & 0x00080000) != 0),
                  getParentForChildren(),
                  isClean());
          enum_ = null;
        }
        return enumBuilder_;
      }

      private long maxProperties_ ;
      /**
       * <code>optional int64 maxProperties = 21;</code>
       * @return Whether the maxProperties field is set.
       */
      @java.lang.Override
      public boolean hasMaxProperties() {
        return ((bitField0_ & 0x00100000) != 0);
      }
      /**
       * <code>optional int64 maxProperties = 21;</code>
       * @return The maxProperties.
       */
      @java.lang.Override
      public long getMaxProperties() {
        return maxProperties_;
      }
      /**
       * <code>optional int64 maxProperties = 21;</code>
       * @param value The maxProperties to set.
       * @return This builder for chaining.
       */
      public Builder setMaxProperties(long value) {

        maxProperties_ = value;
        bitField0_ |= 0x00100000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 maxProperties = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxProperties() {
        bitField0_ = (bitField0_ & ~0x00100000);
        maxProperties_ = 0L;
        onChanged();
        return this;
      }

      private long minProperties_ ;
      /**
       * <code>optional int64 minProperties = 22;</code>
       * @return Whether the minProperties field is set.
       */
      @java.lang.Override
      public boolean hasMinProperties() {
        return ((bitField0_ & 0x00200000) != 0);
      }
      /**
       * <code>optional int64 minProperties = 22;</code>
       * @return The minProperties.
       */
      @java.lang.Override
      public long getMinProperties() {
        return minProperties_;
      }
      /**
       * <code>optional int64 minProperties = 22;</code>
       * @param value The minProperties to set.
       * @return This builder for chaining.
       */
      public Builder setMinProperties(long value) {

        minProperties_ = value;
        bitField0_ |= 0x00200000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 minProperties = 22;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinProperties() {
        bitField0_ = (bitField0_ & ~0x00200000);
        minProperties_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList required_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureRequiredIsMutable() {
        if (!required_.isModifiable()) {
          required_ = new com.google.protobuf.LazyStringArrayList(required_);
        }
        bitField0_ |= 0x00400000;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @return A list containing the required.
       */
      public com.google.protobuf.ProtocolStringList
          getRequiredList() {
        required_.makeImmutable();
        return required_;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @return The count of required.
       */
      public int getRequiredCount() {
        return required_.size();
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @param index The index of the element to return.
       * @return The required at the given index.
       */
      public java.lang.String getRequired(int index) {
        return required_.get(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @param index The index of the value to return.
       * @return The bytes of the required at the given index.
       */
      public com.google.protobuf.ByteString
          getRequiredBytes(int index) {
        return required_.getByteString(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @param index The index to set the value at.
       * @param value The required to set.
       * @return This builder for chaining.
       */
      public Builder setRequired(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRequiredIsMutable();
        required_.set(index, value);
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @param value The required to add.
       * @return This builder for chaining.
       */
      public Builder addRequired(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRequiredIsMutable();
        required_.add(value);
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @param values The required to add.
       * @return This builder for chaining.
       */
      public Builder addAllRequired(
          java.lang.Iterable<java.lang.String> values) {
        ensureRequiredIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, required_);
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequired() {
        required_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00400000);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string required = 23;</code>
       * @param value The bytes of the required to add.
       * @return This builder for chaining.
       */
      public Builder addRequiredBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureRequiredIsMutable();
        required_.add(value);
        bitField0_ |= 0x00400000;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray items_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArrayOrBuilder> itemsBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       * @return Whether the items field is set.
       */
      public boolean hasItems() {
        return ((bitField0_ & 0x00800000) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       * @return The items.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray getItems() {
        if (itemsBuilder_ == null) {
          return items_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.getDefaultInstance() : items_;
        } else {
          return itemsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       */
      public Builder setItems(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray value) {
        if (itemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          items_ = value;
        } else {
          itemsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       */
      public Builder setItems(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.Builder builderForValue) {
        if (itemsBuilder_ == null) {
          items_ = builderForValue.build();
        } else {
          itemsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00800000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       */
      public Builder mergeItems(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray value) {
        if (itemsBuilder_ == null) {
          if (((bitField0_ & 0x00800000) != 0) &&
            items_ != null &&
            items_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.getDefaultInstance()) {
            getItemsBuilder().mergeFrom(value);
          } else {
            items_ = value;
          }
        } else {
          itemsBuilder_.mergeFrom(value);
        }
        if (items_ != null) {
          bitField0_ |= 0x00800000;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       */
      public Builder clearItems() {
        bitField0_ = (bitField0_ & ~0x00800000);
        items_ = null;
        if (itemsBuilder_ != null) {
          itemsBuilder_.dispose();
          itemsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.Builder getItemsBuilder() {
        bitField0_ |= 0x00800000;
        onChanged();
        return getItemsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArrayOrBuilder getItemsOrBuilder() {
        if (itemsBuilder_ != null) {
          return itemsBuilder_.getMessageOrBuilder();
        } else {
          return items_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.getDefaultInstance() : items_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray items = 24;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArrayOrBuilder> 
          getItemsFieldBuilder() {
        if (itemsBuilder_ == null) {
          itemsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArrayOrBuilder>(
                  getItems(),
                  getParentForChildren(),
                  isClean());
          items_ = null;
        }
        return itemsBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> allOf_ =
        java.util.Collections.emptyList();
      private void ensureAllOfIsMutable() {
        if (!((bitField0_ & 0x01000000) != 0)) {
          allOf_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>(allOf_);
          bitField0_ |= 0x01000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> allOfBuilder_;

      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getAllOfList() {
        if (allOfBuilder_ == null) {
          return java.util.Collections.unmodifiableList(allOf_);
        } else {
          return allOfBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public int getAllOfCount() {
        if (allOfBuilder_ == null) {
          return allOf_.size();
        } else {
          return allOfBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getAllOf(int index) {
        if (allOfBuilder_ == null) {
          return allOf_.get(index);
        } else {
          return allOfBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder setAllOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (allOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllOfIsMutable();
          allOf_.set(index, value);
          onChanged();
        } else {
          allOfBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder setAllOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (allOfBuilder_ == null) {
          ensureAllOfIsMutable();
          allOf_.set(index, builderForValue.build());
          onChanged();
        } else {
          allOfBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder addAllOf(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (allOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllOfIsMutable();
          allOf_.add(value);
          onChanged();
        } else {
          allOfBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder addAllOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (allOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllOfIsMutable();
          allOf_.add(index, value);
          onChanged();
        } else {
          allOfBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder addAllOf(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (allOfBuilder_ == null) {
          ensureAllOfIsMutable();
          allOf_.add(builderForValue.build());
          onChanged();
        } else {
          allOfBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder addAllOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (allOfBuilder_ == null) {
          ensureAllOfIsMutable();
          allOf_.add(index, builderForValue.build());
          onChanged();
        } else {
          allOfBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder addAllAllOf(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> values) {
        if (allOfBuilder_ == null) {
          ensureAllOfIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, allOf_);
          onChanged();
        } else {
          allOfBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder clearAllOf() {
        if (allOfBuilder_ == null) {
          allOf_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x01000000);
          onChanged();
        } else {
          allOfBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public Builder removeAllOf(int index) {
        if (allOfBuilder_ == null) {
          ensureAllOfIsMutable();
          allOf_.remove(index);
          onChanged();
        } else {
          allOfBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getAllOfBuilder(
          int index) {
        return getAllOfFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getAllOfOrBuilder(
          int index) {
        if (allOfBuilder_ == null) {
          return allOf_.get(index);  } else {
          return allOfBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
           getAllOfOrBuilderList() {
        if (allOfBuilder_ != null) {
          return allOfBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(allOf_);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addAllOfBuilder() {
        return getAllOfFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addAllOfBuilder(
          int index) {
        return getAllOfFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps allOf = 25;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder> 
           getAllOfBuilderList() {
        return getAllOfFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getAllOfFieldBuilder() {
        if (allOfBuilder_ == null) {
          allOfBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  allOf_,
                  ((bitField0_ & 0x01000000) != 0),
                  getParentForChildren(),
                  isClean());
          allOf_ = null;
        }
        return allOfBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> oneOf_ =
        java.util.Collections.emptyList();
      private void ensureOneOfIsMutable() {
        if (!((bitField0_ & 0x02000000) != 0)) {
          oneOf_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>(oneOf_);
          bitField0_ |= 0x02000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> oneOfBuilder_;

      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getOneOfList() {
        if (oneOfBuilder_ == null) {
          return java.util.Collections.unmodifiableList(oneOf_);
        } else {
          return oneOfBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public int getOneOfCount() {
        if (oneOfBuilder_ == null) {
          return oneOf_.size();
        } else {
          return oneOfBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getOneOf(int index) {
        if (oneOfBuilder_ == null) {
          return oneOf_.get(index);
        } else {
          return oneOfBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder setOneOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (oneOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOneOfIsMutable();
          oneOf_.set(index, value);
          onChanged();
        } else {
          oneOfBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder setOneOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (oneOfBuilder_ == null) {
          ensureOneOfIsMutable();
          oneOf_.set(index, builderForValue.build());
          onChanged();
        } else {
          oneOfBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder addOneOf(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (oneOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOneOfIsMutable();
          oneOf_.add(value);
          onChanged();
        } else {
          oneOfBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder addOneOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (oneOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOneOfIsMutable();
          oneOf_.add(index, value);
          onChanged();
        } else {
          oneOfBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder addOneOf(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (oneOfBuilder_ == null) {
          ensureOneOfIsMutable();
          oneOf_.add(builderForValue.build());
          onChanged();
        } else {
          oneOfBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder addOneOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (oneOfBuilder_ == null) {
          ensureOneOfIsMutable();
          oneOf_.add(index, builderForValue.build());
          onChanged();
        } else {
          oneOfBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder addAllOneOf(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> values) {
        if (oneOfBuilder_ == null) {
          ensureOneOfIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, oneOf_);
          onChanged();
        } else {
          oneOfBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder clearOneOf() {
        if (oneOfBuilder_ == null) {
          oneOf_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x02000000);
          onChanged();
        } else {
          oneOfBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public Builder removeOneOf(int index) {
        if (oneOfBuilder_ == null) {
          ensureOneOfIsMutable();
          oneOf_.remove(index);
          onChanged();
        } else {
          oneOfBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getOneOfBuilder(
          int index) {
        return getOneOfFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getOneOfOrBuilder(
          int index) {
        if (oneOfBuilder_ == null) {
          return oneOf_.get(index);  } else {
          return oneOfBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
           getOneOfOrBuilderList() {
        if (oneOfBuilder_ != null) {
          return oneOfBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(oneOf_);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addOneOfBuilder() {
        return getOneOfFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addOneOfBuilder(
          int index) {
        return getOneOfFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps oneOf = 26;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder> 
           getOneOfBuilderList() {
        return getOneOfFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getOneOfFieldBuilder() {
        if (oneOfBuilder_ == null) {
          oneOfBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  oneOf_,
                  ((bitField0_ & 0x02000000) != 0),
                  getParentForChildren(),
                  isClean());
          oneOf_ = null;
        }
        return oneOfBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> anyOf_ =
        java.util.Collections.emptyList();
      private void ensureAnyOfIsMutable() {
        if (!((bitField0_ & 0x04000000) != 0)) {
          anyOf_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>(anyOf_);
          bitField0_ |= 0x04000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> anyOfBuilder_;

      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getAnyOfList() {
        if (anyOfBuilder_ == null) {
          return java.util.Collections.unmodifiableList(anyOf_);
        } else {
          return anyOfBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public int getAnyOfCount() {
        if (anyOfBuilder_ == null) {
          return anyOf_.size();
        } else {
          return anyOfBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getAnyOf(int index) {
        if (anyOfBuilder_ == null) {
          return anyOf_.get(index);
        } else {
          return anyOfBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder setAnyOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (anyOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnyOfIsMutable();
          anyOf_.set(index, value);
          onChanged();
        } else {
          anyOfBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder setAnyOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (anyOfBuilder_ == null) {
          ensureAnyOfIsMutable();
          anyOf_.set(index, builderForValue.build());
          onChanged();
        } else {
          anyOfBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder addAnyOf(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (anyOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnyOfIsMutable();
          anyOf_.add(value);
          onChanged();
        } else {
          anyOfBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder addAnyOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (anyOfBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAnyOfIsMutable();
          anyOf_.add(index, value);
          onChanged();
        } else {
          anyOfBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder addAnyOf(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (anyOfBuilder_ == null) {
          ensureAnyOfIsMutable();
          anyOf_.add(builderForValue.build());
          onChanged();
        } else {
          anyOfBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder addAnyOf(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (anyOfBuilder_ == null) {
          ensureAnyOfIsMutable();
          anyOf_.add(index, builderForValue.build());
          onChanged();
        } else {
          anyOfBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder addAllAnyOf(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> values) {
        if (anyOfBuilder_ == null) {
          ensureAnyOfIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, anyOf_);
          onChanged();
        } else {
          anyOfBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder clearAnyOf() {
        if (anyOfBuilder_ == null) {
          anyOf_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x04000000);
          onChanged();
        } else {
          anyOfBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public Builder removeAnyOf(int index) {
        if (anyOfBuilder_ == null) {
          ensureAnyOfIsMutable();
          anyOf_.remove(index);
          onChanged();
        } else {
          anyOfBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getAnyOfBuilder(
          int index) {
        return getAnyOfFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getAnyOfOrBuilder(
          int index) {
        if (anyOfBuilder_ == null) {
          return anyOf_.get(index);  } else {
          return anyOfBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
           getAnyOfOrBuilderList() {
        if (anyOfBuilder_ != null) {
          return anyOfBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(anyOf_);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addAnyOfBuilder() {
        return getAnyOfFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addAnyOfBuilder(
          int index) {
        return getAnyOfFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps anyOf = 27;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder> 
           getAnyOfBuilderList() {
        return getAnyOfFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getAnyOfFieldBuilder() {
        if (anyOfBuilder_ == null) {
          anyOfBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  anyOf_,
                  ((bitField0_ & 0x04000000) != 0),
                  getParentForChildren(),
                  isClean());
          anyOf_ = null;
        }
        return anyOfBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps not_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> notBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       * @return Whether the not field is set.
       */
      public boolean hasNot() {
        return ((bitField0_ & 0x08000000) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       * @return The not.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getNot() {
        if (notBuilder_ == null) {
          return not_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : not_;
        } else {
          return notBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       */
      public Builder setNot(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (notBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          not_ = value;
        } else {
          notBuilder_.setMessage(value);
        }
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       */
      public Builder setNot(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (notBuilder_ == null) {
          not_ = builderForValue.build();
        } else {
          notBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x08000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       */
      public Builder mergeNot(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (notBuilder_ == null) {
          if (((bitField0_ & 0x08000000) != 0) &&
            not_ != null &&
            not_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance()) {
            getNotBuilder().mergeFrom(value);
          } else {
            not_ = value;
          }
        } else {
          notBuilder_.mergeFrom(value);
        }
        if (not_ != null) {
          bitField0_ |= 0x08000000;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       */
      public Builder clearNot() {
        bitField0_ = (bitField0_ & ~0x08000000);
        not_ = null;
        if (notBuilder_ != null) {
          notBuilder_.dispose();
          notBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getNotBuilder() {
        bitField0_ |= 0x08000000;
        onChanged();
        return getNotFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getNotOrBuilder() {
        if (notBuilder_ != null) {
          return notBuilder_.getMessageOrBuilder();
        } else {
          return not_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : not_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps not = 28;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getNotFieldBuilder() {
        if (notBuilder_ == null) {
          notBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  getNot(),
                  getParentForChildren(),
                  isClean());
          not_ = null;
        }
        return notBuilder_;
      }

      private static final class PropertiesConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> {
        @java.lang.Override
        public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps build(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) { return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) val; }
          return ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> defaultEntry() {
          return PropertiesDefaultEntryHolder.defaultEntry;
        }
      };
      private static final PropertiesConverter propertiesConverter = new PropertiesConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder> properties_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder>
          internalGetProperties() {
        if (properties_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(propertiesConverter);
        }
        return properties_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder>
          internalGetMutableProperties() {
        if (properties_ == null) {
          properties_ = new com.google.protobuf.MapFieldBuilder<>(propertiesConverter);
        }
        bitField0_ |= 0x10000000;
        onChanged();
        return properties_;
      }
      public int getPropertiesCount() {
        return internalGetProperties().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      @java.lang.Override
      public boolean containsProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetProperties().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getPropertiesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getProperties() {
        return getPropertiesMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getPropertiesMap() {
        return internalGetProperties().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPropertiesOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> map = internalGetMutableProperties().ensureBuilderMap();
        return map.containsKey(key) ? propertiesConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPropertiesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> map = internalGetMutableProperties().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return propertiesConverter.build(map.get(key));
      }
      public Builder clearProperties() {
        bitField0_ = (bitField0_ & ~0x10000000);
        internalGetMutableProperties().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      public Builder removeProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableProperties().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
          getMutableProperties() {
        bitField0_ |= 0x10000000;
        return internalGetMutableProperties().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      public Builder putProperties(
          java.lang.String key,
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableProperties().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      public Builder putAllProperties(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableProperties().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x10000000;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; properties = 29;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder putPropertiesBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> builderMap = internalGetMutableProperties().ensureBuilderMap();
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) {
          entry = ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder) entry;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool additionalProperties_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder> additionalPropertiesBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       * @return Whether the additionalProperties field is set.
       */
      public boolean hasAdditionalProperties() {
        return ((bitField0_ & 0x20000000) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       * @return The additionalProperties.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getAdditionalProperties() {
        if (additionalPropertiesBuilder_ == null) {
          return additionalProperties_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalProperties_;
        } else {
          return additionalPropertiesBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       */
      public Builder setAdditionalProperties(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool value) {
        if (additionalPropertiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          additionalProperties_ = value;
        } else {
          additionalPropertiesBuilder_.setMessage(value);
        }
        bitField0_ |= 0x20000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       */
      public Builder setAdditionalProperties(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder builderForValue) {
        if (additionalPropertiesBuilder_ == null) {
          additionalProperties_ = builderForValue.build();
        } else {
          additionalPropertiesBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x20000000;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       */
      public Builder mergeAdditionalProperties(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool value) {
        if (additionalPropertiesBuilder_ == null) {
          if (((bitField0_ & 0x20000000) != 0) &&
            additionalProperties_ != null &&
            additionalProperties_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance()) {
            getAdditionalPropertiesBuilder().mergeFrom(value);
          } else {
            additionalProperties_ = value;
          }
        } else {
          additionalPropertiesBuilder_.mergeFrom(value);
        }
        if (additionalProperties_ != null) {
          bitField0_ |= 0x20000000;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       */
      public Builder clearAdditionalProperties() {
        bitField0_ = (bitField0_ & ~0x20000000);
        additionalProperties_ = null;
        if (additionalPropertiesBuilder_ != null) {
          additionalPropertiesBuilder_.dispose();
          additionalPropertiesBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder getAdditionalPropertiesBuilder() {
        bitField0_ |= 0x20000000;
        onChanged();
        return getAdditionalPropertiesFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder getAdditionalPropertiesOrBuilder() {
        if (additionalPropertiesBuilder_ != null) {
          return additionalPropertiesBuilder_.getMessageOrBuilder();
        } else {
          return additionalProperties_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalProperties_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalProperties = 30;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder> 
          getAdditionalPropertiesFieldBuilder() {
        if (additionalPropertiesBuilder_ == null) {
          additionalPropertiesBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder>(
                  getAdditionalProperties(),
                  getParentForChildren(),
                  isClean());
          additionalProperties_ = null;
        }
        return additionalPropertiesBuilder_;
      }

      private static final class PatternPropertiesConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> {
        @java.lang.Override
        public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps build(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) { return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) val; }
          return ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> defaultEntry() {
          return PatternPropertiesDefaultEntryHolder.defaultEntry;
        }
      };
      private static final PatternPropertiesConverter patternPropertiesConverter = new PatternPropertiesConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder> patternProperties_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder>
          internalGetPatternProperties() {
        if (patternProperties_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(patternPropertiesConverter);
        }
        return patternProperties_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder>
          internalGetMutablePatternProperties() {
        if (patternProperties_ == null) {
          patternProperties_ = new com.google.protobuf.MapFieldBuilder<>(patternPropertiesConverter);
        }
        bitField0_ |= 0x40000000;
        onChanged();
        return patternProperties_;
      }
      public int getPatternPropertiesCount() {
        return internalGetPatternProperties().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      @java.lang.Override
      public boolean containsPatternProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetPatternProperties().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getPatternPropertiesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getPatternProperties() {
        return getPatternPropertiesMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getPatternPropertiesMap() {
        return internalGetPatternProperties().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPatternPropertiesOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> map = internalGetMutablePatternProperties().ensureBuilderMap();
        return map.containsKey(key) ? patternPropertiesConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getPatternPropertiesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> map = internalGetMutablePatternProperties().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return patternPropertiesConverter.build(map.get(key));
      }
      public Builder clearPatternProperties() {
        bitField0_ = (bitField0_ & ~0x40000000);
        internalGetMutablePatternProperties().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      public Builder removePatternProperties(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutablePatternProperties().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
          getMutablePatternProperties() {
        bitField0_ |= 0x40000000;
        return internalGetMutablePatternProperties().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      public Builder putPatternProperties(
          java.lang.String key,
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutablePatternProperties().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x40000000;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      public Builder putAllPatternProperties(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutablePatternProperties().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x40000000;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; patternProperties = 31;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder putPatternPropertiesBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> builderMap = internalGetMutablePatternProperties().ensureBuilderMap();
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) {
          entry = ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder) entry;
      }

      private static final class DependenciesConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> {
        @java.lang.Override
        public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray build(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray) { return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray) val; }
          return ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> defaultEntry() {
          return DependenciesDefaultEntryHolder.defaultEntry;
        }
      };
      private static final DependenciesConverter dependenciesConverter = new DependenciesConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder> dependencies_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder>
          internalGetDependencies() {
        if (dependencies_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(dependenciesConverter);
        }
        return dependencies_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder>
          internalGetMutableDependencies() {
        if (dependencies_ == null) {
          dependencies_ = new com.google.protobuf.MapFieldBuilder<>(dependenciesConverter);
        }
        bitField0_ |= 0x80000000;
        onChanged();
        return dependencies_;
      }
      public int getDependenciesCount() {
        return internalGetDependencies().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      @java.lang.Override
      public boolean containsDependencies(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetDependencies().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getDependenciesMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> getDependencies() {
        return getDependenciesMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> getDependenciesMap() {
        return internalGetDependencies().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDependenciesOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder> map = internalGetMutableDependencies().ensureBuilderMap();
        return map.containsKey(key) ? dependenciesConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDependenciesOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder> map = internalGetMutableDependencies().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return dependenciesConverter.build(map.get(key));
      }
      public Builder clearDependencies() {
        bitField0_ = (bitField0_ & ~0x80000000);
        internalGetMutableDependencies().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      public Builder removeDependencies(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableDependencies().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray>
          getMutableDependencies() {
        bitField0_ |= 0x80000000;
        return internalGetMutableDependencies().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      public Builder putDependencies(
          java.lang.String key,
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableDependencies().ensureBuilderMap()
            .put(key, value);
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      public Builder putAllDependencies(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableDependencies().ensureBuilderMap()
            .putAll(values);
        bitField0_ |= 0x80000000;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray&gt; dependencies = 32;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder putDependenciesBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder> builderMap = internalGetMutableDependencies().ensureBuilderMap();
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray) {
          entry = ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder) entry;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool additionalItems_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder> additionalItemsBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       * @return Whether the additionalItems field is set.
       */
      public boolean hasAdditionalItems() {
        return ((bitField1_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       * @return The additionalItems.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getAdditionalItems() {
        if (additionalItemsBuilder_ == null) {
          return additionalItems_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalItems_;
        } else {
          return additionalItemsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       */
      public Builder setAdditionalItems(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool value) {
        if (additionalItemsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          additionalItems_ = value;
        } else {
          additionalItemsBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       */
      public Builder setAdditionalItems(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder builderForValue) {
        if (additionalItemsBuilder_ == null) {
          additionalItems_ = builderForValue.build();
        } else {
          additionalItemsBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       */
      public Builder mergeAdditionalItems(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool value) {
        if (additionalItemsBuilder_ == null) {
          if (((bitField1_ & 0x00000001) != 0) &&
            additionalItems_ != null &&
            additionalItems_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance()) {
            getAdditionalItemsBuilder().mergeFrom(value);
          } else {
            additionalItems_ = value;
          }
        } else {
          additionalItemsBuilder_.mergeFrom(value);
        }
        if (additionalItems_ != null) {
          bitField1_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       */
      public Builder clearAdditionalItems() {
        bitField1_ = (bitField1_ & ~0x00000001);
        additionalItems_ = null;
        if (additionalItemsBuilder_ != null) {
          additionalItemsBuilder_.dispose();
          additionalItemsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder getAdditionalItemsBuilder() {
        bitField1_ |= 0x00000001;
        onChanged();
        return getAdditionalItemsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder getAdditionalItemsOrBuilder() {
        if (additionalItemsBuilder_ != null) {
          return additionalItemsBuilder_.getMessageOrBuilder();
        } else {
          return additionalItems_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance() : additionalItems_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool additionalItems = 33;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder> 
          getAdditionalItemsFieldBuilder() {
        if (additionalItemsBuilder_ == null) {
          additionalItemsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder>(
                  getAdditionalItems(),
                  getParentForChildren(),
                  isClean());
          additionalItems_ = null;
        }
        return additionalItemsBuilder_;
      }

      private static final class DefinitionsConverter implements com.google.protobuf.MapFieldBuilder.Converter<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> {
        @java.lang.Override
        public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps build(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder val) {
          if (val instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) { return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) val; }
          return ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder) val).build();
        }

        @java.lang.Override
        public com.google.protobuf.MapEntry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> defaultEntry() {
          return DefinitionsDefaultEntryHolder.defaultEntry;
        }
      };
      private static final DefinitionsConverter definitionsConverter = new DefinitionsConverter();

      private com.google.protobuf.MapFieldBuilder<
          java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder> definitions_;
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder>
          internalGetDefinitions() {
        if (definitions_ == null) {
          return new com.google.protobuf.MapFieldBuilder<>(definitionsConverter);
        }
        return definitions_;
      }
      private com.google.protobuf.MapFieldBuilder<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder>
          internalGetMutableDefinitions() {
        if (definitions_ == null) {
          definitions_ = new com.google.protobuf.MapFieldBuilder<>(definitionsConverter);
        }
        bitField1_ |= 0x00000002;
        onChanged();
        return definitions_;
      }
      public int getDefinitionsCount() {
        return internalGetDefinitions().ensureBuilderMap().size();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      @java.lang.Override
      public boolean containsDefinitions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetDefinitions().ensureBuilderMap().containsKey(key);
      }
      /**
       * Use {@link #getDefinitionsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getDefinitions() {
        return getDefinitionsMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getDefinitionsMap() {
        return internalGetDefinitions().getImmutableMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      @java.lang.Override
      public /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefinitionsOrDefault(
          java.lang.String key,
          /* nullable */
io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> map = internalGetMutableDefinitions().ensureBuilderMap();
        return map.containsKey(key) ? definitionsConverter.build(map.get(key)) : defaultValue;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefinitionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> map = internalGetMutableDefinitions().ensureBuilderMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return definitionsConverter.build(map.get(key));
      }
      public Builder clearDefinitions() {
        bitField1_ = (bitField1_ & ~0x00000002);
        internalGetMutableDefinitions().clear();
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      public Builder removeDefinitions(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableDefinitions().ensureBuilderMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>
          getMutableDefinitions() {
        bitField1_ |= 0x00000002;
        return internalGetMutableDefinitions().ensureMessageMap();
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      public Builder putDefinitions(
          java.lang.String key,
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableDefinitions().ensureBuilderMap()
            .put(key, value);
        bitField1_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      public Builder putAllDefinitions(
          java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> values) {
        for (java.util.Map.Entry<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> e : values.entrySet()) {
          if (e.getKey() == null || e.getValue() == null) {
            throw new NullPointerException();
          }
        }
        internalGetMutableDefinitions().ensureBuilderMap()
            .putAll(values);
        bitField1_ |= 0x00000002;
        return this;
      }
      /**
       * <code>map&lt;string, .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps&gt; definitions = 34;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder putDefinitionsBuilderIfAbsent(
          java.lang.String key) {
        java.util.Map<java.lang.String, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> builderMap = internalGetMutableDefinitions().ensureBuilderMap();
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder entry = builderMap.get(key);
        if (entry == null) {
          entry = io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.newBuilder();
          builderMap.put(key, entry);
        }
        if (entry instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) {
          entry = ((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps) entry).toBuilder();
          builderMap.put(key, entry);
        }
        return (io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder) entry;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation externalDocs_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentationOrBuilder> externalDocsBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       * @return Whether the externalDocs field is set.
       */
      public boolean hasExternalDocs() {
        return ((bitField1_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       * @return The externalDocs.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation getExternalDocs() {
        if (externalDocsBuilder_ == null) {
          return externalDocs_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.getDefaultInstance() : externalDocs_;
        } else {
          return externalDocsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       */
      public Builder setExternalDocs(io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation value) {
        if (externalDocsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          externalDocs_ = value;
        } else {
          externalDocsBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       */
      public Builder setExternalDocs(
          io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.Builder builderForValue) {
        if (externalDocsBuilder_ == null) {
          externalDocs_ = builderForValue.build();
        } else {
          externalDocsBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       */
      public Builder mergeExternalDocs(io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation value) {
        if (externalDocsBuilder_ == null) {
          if (((bitField1_ & 0x00000004) != 0) &&
            externalDocs_ != null &&
            externalDocs_ != io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.getDefaultInstance()) {
            getExternalDocsBuilder().mergeFrom(value);
          } else {
            externalDocs_ = value;
          }
        } else {
          externalDocsBuilder_.mergeFrom(value);
        }
        if (externalDocs_ != null) {
          bitField1_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       */
      public Builder clearExternalDocs() {
        bitField1_ = (bitField1_ & ~0x00000004);
        externalDocs_ = null;
        if (externalDocsBuilder_ != null) {
          externalDocsBuilder_.dispose();
          externalDocsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.Builder getExternalDocsBuilder() {
        bitField1_ |= 0x00000004;
        onChanged();
        return getExternalDocsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentationOrBuilder getExternalDocsOrBuilder() {
        if (externalDocsBuilder_ != null) {
          return externalDocsBuilder_.getMessageOrBuilder();
        } else {
          return externalDocs_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.getDefaultInstance() : externalDocs_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ExternalDocumentation externalDocs = 35;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentationOrBuilder> 
          getExternalDocsFieldBuilder() {
        if (externalDocsBuilder_ == null) {
          externalDocsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentation.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ExternalDocumentationOrBuilder>(
                  getExternalDocs(),
                  getParentForChildren(),
                  isClean());
          externalDocs_ = null;
        }
        return externalDocsBuilder_;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSON example_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> exampleBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       * @return Whether the example field is set.
       */
      public boolean hasExample() {
        return ((bitField1_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       * @return The example.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON getExample() {
        if (exampleBuilder_ == null) {
          return example_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : example_;
        } else {
          return exampleBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       */
      public Builder setExample(io.kubernetes.client.proto.V1beta1Apiextensions.JSON value) {
        if (exampleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          example_ = value;
        } else {
          exampleBuilder_.setMessage(value);
        }
        bitField1_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       */
      public Builder setExample(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder builderForValue) {
        if (exampleBuilder_ == null) {
          example_ = builderForValue.build();
        } else {
          exampleBuilder_.setMessage(builderForValue.build());
        }
        bitField1_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       */
      public Builder mergeExample(io.kubernetes.client.proto.V1beta1Apiextensions.JSON value) {
        if (exampleBuilder_ == null) {
          if (((bitField1_ & 0x00000008) != 0) &&
            example_ != null &&
            example_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance()) {
            getExampleBuilder().mergeFrom(value);
          } else {
            example_ = value;
          }
        } else {
          exampleBuilder_.mergeFrom(value);
        }
        if (example_ != null) {
          bitField1_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       */
      public Builder clearExample() {
        bitField1_ = (bitField1_ & ~0x00000008);
        example_ = null;
        if (exampleBuilder_ != null) {
          exampleBuilder_.dispose();
          exampleBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder getExampleBuilder() {
        bitField1_ |= 0x00000008;
        onChanged();
        return getExampleFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder getExampleOrBuilder() {
        if (exampleBuilder_ != null) {
          return exampleBuilder_.getMessageOrBuilder();
        } else {
          return example_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSON.getDefaultInstance() : example_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSON example = 36;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder> 
          getExampleFieldBuilder() {
        if (exampleBuilder_ == null) {
          exampleBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSON, io.kubernetes.client.proto.V1beta1Apiextensions.JSON.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONOrBuilder>(
                  getExample(),
                  getParentForChildren(),
                  isClean());
          example_ = null;
        }
        return exampleBuilder_;
      }

      private boolean nullable_ ;
      /**
       * <code>optional bool nullable = 37;</code>
       * @return Whether the nullable field is set.
       */
      @java.lang.Override
      public boolean hasNullable() {
        return ((bitField1_ & 0x00000010) != 0);
      }
      /**
       * <code>optional bool nullable = 37;</code>
       * @return The nullable.
       */
      @java.lang.Override
      public boolean getNullable() {
        return nullable_;
      }
      /**
       * <code>optional bool nullable = 37;</code>
       * @param value The nullable to set.
       * @return This builder for chaining.
       */
      public Builder setNullable(boolean value) {

        nullable_ = value;
        bitField1_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool nullable = 37;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullable() {
        bitField1_ = (bitField1_ & ~0x00000010);
        nullable_ = false;
        onChanged();
        return this;
      }

      private boolean xKubernetesPreserveUnknownFields_ ;
      /**
       * <pre>
       * x-kubernetes-preserve-unknown-fields stops the API server
       * decoding step from pruning fields which are not specified
       * in the validation schema. This affects fields recursively,
       * but switches back to normal pruning behaviour if nested
       * properties or additionalProperties are specified in the schema.
       * This can either be true or undefined. False is forbidden.
       * </pre>
       *
       * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
       * @return Whether the xKubernetesPreserveUnknownFields field is set.
       */
      @java.lang.Override
      public boolean hasXKubernetesPreserveUnknownFields() {
        return ((bitField1_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * x-kubernetes-preserve-unknown-fields stops the API server
       * decoding step from pruning fields which are not specified
       * in the validation schema. This affects fields recursively,
       * but switches back to normal pruning behaviour if nested
       * properties or additionalProperties are specified in the schema.
       * This can either be true or undefined. False is forbidden.
       * </pre>
       *
       * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
       * @return The xKubernetesPreserveUnknownFields.
       */
      @java.lang.Override
      public boolean getXKubernetesPreserveUnknownFields() {
        return xKubernetesPreserveUnknownFields_;
      }
      /**
       * <pre>
       * x-kubernetes-preserve-unknown-fields stops the API server
       * decoding step from pruning fields which are not specified
       * in the validation schema. This affects fields recursively,
       * but switches back to normal pruning behaviour if nested
       * properties or additionalProperties are specified in the schema.
       * This can either be true or undefined. False is forbidden.
       * </pre>
       *
       * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
       * @param value The xKubernetesPreserveUnknownFields to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesPreserveUnknownFields(boolean value) {

        xKubernetesPreserveUnknownFields_ = value;
        bitField1_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-preserve-unknown-fields stops the API server
       * decoding step from pruning fields which are not specified
       * in the validation schema. This affects fields recursively,
       * but switches back to normal pruning behaviour if nested
       * properties or additionalProperties are specified in the schema.
       * This can either be true or undefined. False is forbidden.
       * </pre>
       *
       * <code>optional bool xKubernetesPreserveUnknownFields = 38;</code>
       * @return This builder for chaining.
       */
      public Builder clearXKubernetesPreserveUnknownFields() {
        bitField1_ = (bitField1_ & ~0x00000020);
        xKubernetesPreserveUnknownFields_ = false;
        onChanged();
        return this;
      }

      private boolean xKubernetesEmbeddedResource_ ;
      /**
       * <pre>
       * x-kubernetes-embedded-resource defines that the value is an
       * embedded Kubernetes runtime.Object, with TypeMeta and
       * ObjectMeta. The type must be object. It is allowed to further
       * restrict the embedded object. kind, apiVersion and metadata
       * are validated automatically. x-kubernetes-preserve-unknown-fields
       * is allowed to be true, but does not have to be if the object
       * is fully specified (up to kind, apiVersion, metadata).
       * </pre>
       *
       * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
       * @return Whether the xKubernetesEmbeddedResource field is set.
       */
      @java.lang.Override
      public boolean hasXKubernetesEmbeddedResource() {
        return ((bitField1_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * x-kubernetes-embedded-resource defines that the value is an
       * embedded Kubernetes runtime.Object, with TypeMeta and
       * ObjectMeta. The type must be object. It is allowed to further
       * restrict the embedded object. kind, apiVersion and metadata
       * are validated automatically. x-kubernetes-preserve-unknown-fields
       * is allowed to be true, but does not have to be if the object
       * is fully specified (up to kind, apiVersion, metadata).
       * </pre>
       *
       * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
       * @return The xKubernetesEmbeddedResource.
       */
      @java.lang.Override
      public boolean getXKubernetesEmbeddedResource() {
        return xKubernetesEmbeddedResource_;
      }
      /**
       * <pre>
       * x-kubernetes-embedded-resource defines that the value is an
       * embedded Kubernetes runtime.Object, with TypeMeta and
       * ObjectMeta. The type must be object. It is allowed to further
       * restrict the embedded object. kind, apiVersion and metadata
       * are validated automatically. x-kubernetes-preserve-unknown-fields
       * is allowed to be true, but does not have to be if the object
       * is fully specified (up to kind, apiVersion, metadata).
       * </pre>
       *
       * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
       * @param value The xKubernetesEmbeddedResource to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesEmbeddedResource(boolean value) {

        xKubernetesEmbeddedResource_ = value;
        bitField1_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-embedded-resource defines that the value is an
       * embedded Kubernetes runtime.Object, with TypeMeta and
       * ObjectMeta. The type must be object. It is allowed to further
       * restrict the embedded object. kind, apiVersion and metadata
       * are validated automatically. x-kubernetes-preserve-unknown-fields
       * is allowed to be true, but does not have to be if the object
       * is fully specified (up to kind, apiVersion, metadata).
       * </pre>
       *
       * <code>optional bool xKubernetesEmbeddedResource = 39;</code>
       * @return This builder for chaining.
       */
      public Builder clearXKubernetesEmbeddedResource() {
        bitField1_ = (bitField1_ & ~0x00000040);
        xKubernetesEmbeddedResource_ = false;
        onChanged();
        return this;
      }

      private boolean xKubernetesIntOrString_ ;
      /**
       * <pre>
       * x-kubernetes-int-or-string specifies that this value is
       * either an integer or a string. If this is true, an empty
       * type is allowed and type as child of anyOf is permitted
       * if following one of the following patterns:
       *
       * 1) anyOf:
       * - type: integer
       * - type: string
       * 2) allOf:
       * - anyOf:
       * - type: integer
       * - type: string
       * - ... zero or more
       * </pre>
       *
       * <code>optional bool xKubernetesIntOrString = 40;</code>
       * @return Whether the xKubernetesIntOrString field is set.
       */
      @java.lang.Override
      public boolean hasXKubernetesIntOrString() {
        return ((bitField1_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * x-kubernetes-int-or-string specifies that this value is
       * either an integer or a string. If this is true, an empty
       * type is allowed and type as child of anyOf is permitted
       * if following one of the following patterns:
       *
       * 1) anyOf:
       * - type: integer
       * - type: string
       * 2) allOf:
       * - anyOf:
       * - type: integer
       * - type: string
       * - ... zero or more
       * </pre>
       *
       * <code>optional bool xKubernetesIntOrString = 40;</code>
       * @return The xKubernetesIntOrString.
       */
      @java.lang.Override
      public boolean getXKubernetesIntOrString() {
        return xKubernetesIntOrString_;
      }
      /**
       * <pre>
       * x-kubernetes-int-or-string specifies that this value is
       * either an integer or a string. If this is true, an empty
       * type is allowed and type as child of anyOf is permitted
       * if following one of the following patterns:
       *
       * 1) anyOf:
       * - type: integer
       * - type: string
       * 2) allOf:
       * - anyOf:
       * - type: integer
       * - type: string
       * - ... zero or more
       * </pre>
       *
       * <code>optional bool xKubernetesIntOrString = 40;</code>
       * @param value The xKubernetesIntOrString to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesIntOrString(boolean value) {

        xKubernetesIntOrString_ = value;
        bitField1_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-int-or-string specifies that this value is
       * either an integer or a string. If this is true, an empty
       * type is allowed and type as child of anyOf is permitted
       * if following one of the following patterns:
       *
       * 1) anyOf:
       * - type: integer
       * - type: string
       * 2) allOf:
       * - anyOf:
       * - type: integer
       * - type: string
       * - ... zero or more
       * </pre>
       *
       * <code>optional bool xKubernetesIntOrString = 40;</code>
       * @return This builder for chaining.
       */
      public Builder clearXKubernetesIntOrString() {
        bitField1_ = (bitField1_ & ~0x00000080);
        xKubernetesIntOrString_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList xKubernetesListMapKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureXKubernetesListMapKeysIsMutable() {
        if (!xKubernetesListMapKeys_.isModifiable()) {
          xKubernetesListMapKeys_ = new com.google.protobuf.LazyStringArrayList(xKubernetesListMapKeys_);
        }
        bitField1_ |= 0x00000100;
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @return A list containing the xKubernetesListMapKeys.
       */
      public com.google.protobuf.ProtocolStringList
          getXKubernetesListMapKeysList() {
        xKubernetesListMapKeys_.makeImmutable();
        return xKubernetesListMapKeys_;
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @return The count of xKubernetesListMapKeys.
       */
      public int getXKubernetesListMapKeysCount() {
        return xKubernetesListMapKeys_.size();
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @param index The index of the element to return.
       * @return The xKubernetesListMapKeys at the given index.
       */
      public java.lang.String getXKubernetesListMapKeys(int index) {
        return xKubernetesListMapKeys_.get(index);
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @param index The index of the value to return.
       * @return The bytes of the xKubernetesListMapKeys at the given index.
       */
      public com.google.protobuf.ByteString
          getXKubernetesListMapKeysBytes(int index) {
        return xKubernetesListMapKeys_.getByteString(index);
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @param index The index to set the value at.
       * @param value The xKubernetesListMapKeys to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesListMapKeys(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureXKubernetesListMapKeysIsMutable();
        xKubernetesListMapKeys_.set(index, value);
        bitField1_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @param value The xKubernetesListMapKeys to add.
       * @return This builder for chaining.
       */
      public Builder addXKubernetesListMapKeys(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureXKubernetesListMapKeysIsMutable();
        xKubernetesListMapKeys_.add(value);
        bitField1_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @param values The xKubernetesListMapKeys to add.
       * @return This builder for chaining.
       */
      public Builder addAllXKubernetesListMapKeys(
          java.lang.Iterable<java.lang.String> values) {
        ensureXKubernetesListMapKeysIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, xKubernetesListMapKeys_);
        bitField1_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @return This builder for chaining.
       */
      public Builder clearXKubernetesListMapKeys() {
        xKubernetesListMapKeys_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField1_ = (bitField1_ & ~0x00000100);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-list-map-keys annotates an array with the x-kubernetes-list-type `map` by specifying the keys used
       * as the index of the map.
       *
       * This tag MUST only be used on lists that have the "x-kubernetes-list-type"
       * extension set to "map". Also, the values specified for this attribute must
       * be a scalar typed field of the child structure (no nesting is supported).
       *
       * The properties specified must either be required or have a default value,
       * to ensure those properties are present for all list items.
       *
       * +optional
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string xKubernetesListMapKeys = 41;</code>
       * @param value The bytes of the xKubernetesListMapKeys to add.
       * @return This builder for chaining.
       */
      public Builder addXKubernetesListMapKeysBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureXKubernetesListMapKeysIsMutable();
        xKubernetesListMapKeys_.add(value);
        bitField1_ |= 0x00000100;
        onChanged();
        return this;
      }

      private java.lang.Object xKubernetesListType_ = "";
      /**
       * <pre>
       * x-kubernetes-list-type annotates an array to further describe its topology.
       * This extension must only be used on lists and may have 3 possible values:
       *
       * 1) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic lists will be entirely replaced when updated. This extension
       * may be used on any type of list (struct, scalar, ...).
       * 2) `set`:
       * Sets are lists that must not have multiple items with the same value. Each
       * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
       * array with x-kubernetes-list-type `atomic`.
       * 3) `map`:
       * These lists are like maps in that their elements have a non-index key
       * used to identify them. Order is preserved upon merge. The map tag
       * must only be used on a list with elements of type object.
       * Defaults to atomic for arrays.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesListType = 42;</code>
       * @return Whether the xKubernetesListType field is set.
       */
      public boolean hasXKubernetesListType() {
        return ((bitField1_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * x-kubernetes-list-type annotates an array to further describe its topology.
       * This extension must only be used on lists and may have 3 possible values:
       *
       * 1) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic lists will be entirely replaced when updated. This extension
       * may be used on any type of list (struct, scalar, ...).
       * 2) `set`:
       * Sets are lists that must not have multiple items with the same value. Each
       * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
       * array with x-kubernetes-list-type `atomic`.
       * 3) `map`:
       * These lists are like maps in that their elements have a non-index key
       * used to identify them. Order is preserved upon merge. The map tag
       * must only be used on a list with elements of type object.
       * Defaults to atomic for arrays.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesListType = 42;</code>
       * @return The xKubernetesListType.
       */
      public java.lang.String getXKubernetesListType() {
        java.lang.Object ref = xKubernetesListType_;
        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()) {
            xKubernetesListType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * x-kubernetes-list-type annotates an array to further describe its topology.
       * This extension must only be used on lists and may have 3 possible values:
       *
       * 1) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic lists will be entirely replaced when updated. This extension
       * may be used on any type of list (struct, scalar, ...).
       * 2) `set`:
       * Sets are lists that must not have multiple items with the same value. Each
       * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
       * array with x-kubernetes-list-type `atomic`.
       * 3) `map`:
       * These lists are like maps in that their elements have a non-index key
       * used to identify them. Order is preserved upon merge. The map tag
       * must only be used on a list with elements of type object.
       * Defaults to atomic for arrays.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesListType = 42;</code>
       * @return The bytes for xKubernetesListType.
       */
      public com.google.protobuf.ByteString
          getXKubernetesListTypeBytes() {
        java.lang.Object ref = xKubernetesListType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xKubernetesListType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * x-kubernetes-list-type annotates an array to further describe its topology.
       * This extension must only be used on lists and may have 3 possible values:
       *
       * 1) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic lists will be entirely replaced when updated. This extension
       * may be used on any type of list (struct, scalar, ...).
       * 2) `set`:
       * Sets are lists that must not have multiple items with the same value. Each
       * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
       * array with x-kubernetes-list-type `atomic`.
       * 3) `map`:
       * These lists are like maps in that their elements have a non-index key
       * used to identify them. Order is preserved upon merge. The map tag
       * must only be used on a list with elements of type object.
       * Defaults to atomic for arrays.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesListType = 42;</code>
       * @param value The xKubernetesListType to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesListType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        xKubernetesListType_ = value;
        bitField1_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-list-type annotates an array to further describe its topology.
       * This extension must only be used on lists and may have 3 possible values:
       *
       * 1) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic lists will be entirely replaced when updated. This extension
       * may be used on any type of list (struct, scalar, ...).
       * 2) `set`:
       * Sets are lists that must not have multiple items with the same value. Each
       * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
       * array with x-kubernetes-list-type `atomic`.
       * 3) `map`:
       * These lists are like maps in that their elements have a non-index key
       * used to identify them. Order is preserved upon merge. The map tag
       * must only be used on a list with elements of type object.
       * Defaults to atomic for arrays.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesListType = 42;</code>
       * @return This builder for chaining.
       */
      public Builder clearXKubernetesListType() {
        xKubernetesListType_ = getDefaultInstance().getXKubernetesListType();
        bitField1_ = (bitField1_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-list-type annotates an array to further describe its topology.
       * This extension must only be used on lists and may have 3 possible values:
       *
       * 1) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic lists will be entirely replaced when updated. This extension
       * may be used on any type of list (struct, scalar, ...).
       * 2) `set`:
       * Sets are lists that must not have multiple items with the same value. Each
       * value must be a scalar, an object with x-kubernetes-map-type `atomic` or an
       * array with x-kubernetes-list-type `atomic`.
       * 3) `map`:
       * These lists are like maps in that their elements have a non-index key
       * used to identify them. Order is preserved upon merge. The map tag
       * must only be used on a list with elements of type object.
       * Defaults to atomic for arrays.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesListType = 42;</code>
       * @param value The bytes for xKubernetesListType to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesListTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        xKubernetesListType_ = value;
        bitField1_ |= 0x00000200;
        onChanged();
        return this;
      }

      private java.lang.Object xKubernetesMapType_ = "";
      /**
       * <pre>
       * x-kubernetes-map-type annotates an object to further describe its topology.
       * This extension must only be used when type is object and may have 2 possible values:
       *
       * 1) `granular`:
       * These maps are actual maps (key-value pairs) and each fields are independent
       * from each other (they can each be manipulated by separate actors). This is
       * the default behaviour for all maps.
       * 2) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic maps will be entirely replaced when updated.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesMapType = 43;</code>
       * @return Whether the xKubernetesMapType field is set.
       */
      public boolean hasXKubernetesMapType() {
        return ((bitField1_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * x-kubernetes-map-type annotates an object to further describe its topology.
       * This extension must only be used when type is object and may have 2 possible values:
       *
       * 1) `granular`:
       * These maps are actual maps (key-value pairs) and each fields are independent
       * from each other (they can each be manipulated by separate actors). This is
       * the default behaviour for all maps.
       * 2) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic maps will be entirely replaced when updated.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesMapType = 43;</code>
       * @return The xKubernetesMapType.
       */
      public java.lang.String getXKubernetesMapType() {
        java.lang.Object ref = xKubernetesMapType_;
        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()) {
            xKubernetesMapType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * x-kubernetes-map-type annotates an object to further describe its topology.
       * This extension must only be used when type is object and may have 2 possible values:
       *
       * 1) `granular`:
       * These maps are actual maps (key-value pairs) and each fields are independent
       * from each other (they can each be manipulated by separate actors). This is
       * the default behaviour for all maps.
       * 2) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic maps will be entirely replaced when updated.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesMapType = 43;</code>
       * @return The bytes for xKubernetesMapType.
       */
      public com.google.protobuf.ByteString
          getXKubernetesMapTypeBytes() {
        java.lang.Object ref = xKubernetesMapType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xKubernetesMapType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * x-kubernetes-map-type annotates an object to further describe its topology.
       * This extension must only be used when type is object and may have 2 possible values:
       *
       * 1) `granular`:
       * These maps are actual maps (key-value pairs) and each fields are independent
       * from each other (they can each be manipulated by separate actors). This is
       * the default behaviour for all maps.
       * 2) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic maps will be entirely replaced when updated.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesMapType = 43;</code>
       * @param value The xKubernetesMapType to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesMapType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        xKubernetesMapType_ = value;
        bitField1_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-map-type annotates an object to further describe its topology.
       * This extension must only be used when type is object and may have 2 possible values:
       *
       * 1) `granular`:
       * These maps are actual maps (key-value pairs) and each fields are independent
       * from each other (they can each be manipulated by separate actors). This is
       * the default behaviour for all maps.
       * 2) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic maps will be entirely replaced when updated.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesMapType = 43;</code>
       * @return This builder for chaining.
       */
      public Builder clearXKubernetesMapType() {
        xKubernetesMapType_ = getDefaultInstance().getXKubernetesMapType();
        bitField1_ = (bitField1_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-map-type annotates an object to further describe its topology.
       * This extension must only be used when type is object and may have 2 possible values:
       *
       * 1) `granular`:
       * These maps are actual maps (key-value pairs) and each fields are independent
       * from each other (they can each be manipulated by separate actors). This is
       * the default behaviour for all maps.
       * 2) `atomic`: the list is treated as a single entity, like a scalar.
       * Atomic maps will be entirely replaced when updated.
       * +optional
       * </pre>
       *
       * <code>optional string xKubernetesMapType = 43;</code>
       * @param value The bytes for xKubernetesMapType to set.
       * @return This builder for chaining.
       */
      public Builder setXKubernetesMapTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        xKubernetesMapType_ = value;
        bitField1_ |= 0x00000400;
        onChanged();
        return this;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule> xKubernetesValidations_ =
        java.util.Collections.emptyList();
      private void ensureXKubernetesValidationsIsMutable() {
        if (!((bitField1_ & 0x00000800) != 0)) {
          xKubernetesValidations_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule>(xKubernetesValidations_);
          bitField1_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder> xKubernetesValidationsBuilder_;

      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule> getXKubernetesValidationsList() {
        if (xKubernetesValidationsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(xKubernetesValidations_);
        } else {
          return xKubernetesValidationsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public int getXKubernetesValidationsCount() {
        if (xKubernetesValidationsBuilder_ == null) {
          return xKubernetesValidations_.size();
        } else {
          return xKubernetesValidationsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule getXKubernetesValidations(int index) {
        if (xKubernetesValidationsBuilder_ == null) {
          return xKubernetesValidations_.get(index);
        } else {
          return xKubernetesValidationsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder setXKubernetesValidations(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule value) {
        if (xKubernetesValidationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureXKubernetesValidationsIsMutable();
          xKubernetesValidations_.set(index, value);
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder setXKubernetesValidations(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder builderForValue) {
        if (xKubernetesValidationsBuilder_ == null) {
          ensureXKubernetesValidationsIsMutable();
          xKubernetesValidations_.set(index, builderForValue.build());
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder addXKubernetesValidations(io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule value) {
        if (xKubernetesValidationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureXKubernetesValidationsIsMutable();
          xKubernetesValidations_.add(value);
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder addXKubernetesValidations(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule value) {
        if (xKubernetesValidationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureXKubernetesValidationsIsMutable();
          xKubernetesValidations_.add(index, value);
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder addXKubernetesValidations(
          io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder builderForValue) {
        if (xKubernetesValidationsBuilder_ == null) {
          ensureXKubernetesValidationsIsMutable();
          xKubernetesValidations_.add(builderForValue.build());
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder addXKubernetesValidations(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder builderForValue) {
        if (xKubernetesValidationsBuilder_ == null) {
          ensureXKubernetesValidationsIsMutable();
          xKubernetesValidations_.add(index, builderForValue.build());
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder addAllXKubernetesValidations(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule> values) {
        if (xKubernetesValidationsBuilder_ == null) {
          ensureXKubernetesValidationsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, xKubernetesValidations_);
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder clearXKubernetesValidations() {
        if (xKubernetesValidationsBuilder_ == null) {
          xKubernetesValidations_ = java.util.Collections.emptyList();
          bitField1_ = (bitField1_ & ~0x00000800);
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public Builder removeXKubernetesValidations(int index) {
        if (xKubernetesValidationsBuilder_ == null) {
          ensureXKubernetesValidationsIsMutable();
          xKubernetesValidations_.remove(index);
          onChanged();
        } else {
          xKubernetesValidationsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder getXKubernetesValidationsBuilder(
          int index) {
        return getXKubernetesValidationsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder getXKubernetesValidationsOrBuilder(
          int index) {
        if (xKubernetesValidationsBuilder_ == null) {
          return xKubernetesValidations_.get(index);  } else {
          return xKubernetesValidationsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder> 
           getXKubernetesValidationsOrBuilderList() {
        if (xKubernetesValidationsBuilder_ != null) {
          return xKubernetesValidationsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(xKubernetesValidations_);
        }
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder addXKubernetesValidationsBuilder() {
        return getXKubernetesValidationsFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.getDefaultInstance());
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder addXKubernetesValidationsBuilder(
          int index) {
        return getXKubernetesValidationsFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.getDefaultInstance());
      }
      /**
       * <pre>
       * x-kubernetes-validations describes a list of validation rules written in the CEL expression language.
       * This field is an alpha-level. Using this field requires the feature gate `CustomResourceValidationExpressions` to be enabled.
       * +patchMergeKey=rule
       * +patchStrategy=merge
       * +listType=map
       * +listMapKey=rule
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule xKubernetesValidations = 44;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder> 
           getXKubernetesValidationsBuilderList() {
        return getXKubernetesValidationsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder> 
          getXKubernetesValidationsFieldBuilder() {
        if (xKubernetesValidationsBuilder_ == null) {
          xKubernetesValidationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder>(
                  xKubernetesValidations_,
                  ((bitField1_ & 0x00000800) != 0),
                  getParentForChildren(),
                  isClean());
          xKubernetesValidations_ = null;
        }
        return xKubernetesValidationsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JSONSchemaPropsOrArrayOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return Whether the schema field is set.
     */
    boolean hasSchema();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return The schema.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder();

    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> 
        getJSONSchemasList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getJSONSchemas(int index);
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    int getJSONSchemasCount();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getJSONSchemasOrBuilderList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getJSONSchemasOrBuilder(
        int index);
  }
  /**
   * <pre>
   * JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps
   * or an array of JSONSchemaProps. Mainly here for serialization purposes.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray}
   */
  public static final class JSONSchemaPropsOrArray extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray)
      JSONSchemaPropsOrArrayOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        JSONSchemaPropsOrArray.class.getName());
    }
    // Use JSONSchemaPropsOrArray.newBuilder() to construct.
    private JSONSchemaPropsOrArray(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private JSONSchemaPropsOrArray() {
      jSONSchemas_ = java.util.Collections.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.Builder.class);
    }

    private int bitField0_;
    public static final int SCHEMA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps schema_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return Whether the schema field is set.
     */
    @java.lang.Override
    public boolean hasSchema() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return The schema.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
    }

    public static final int JSONSCHEMAS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> jSONSchemas_;
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    @java.lang.Override
    public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getJSONSchemasList() {
      return jSONSchemas_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
        getJSONSchemasOrBuilderList() {
      return jSONSchemas_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    @java.lang.Override
    public int getJSONSchemasCount() {
      return jSONSchemas_.size();
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getJSONSchemas(int index) {
      return jSONSchemas_.get(index);
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getJSONSchemasOrBuilder(
        int index) {
      return jSONSchemas_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSchema());
      }
      for (int i = 0; i < jSONSchemas_.size(); i++) {
        output.writeMessage(2, jSONSchemas_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

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

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

      if (hasSchema() != other.hasSchema()) return false;
      if (hasSchema()) {
        if (!getSchema()
            .equals(other.getSchema())) return false;
      }
      if (!getJSONSchemasList()
          .equals(other.getJSONSchemasList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSchema()) {
        hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getSchema().hashCode();
      }
      if (getJSONSchemasCount() > 0) {
        hash = (37 * hash) + JSONSCHEMAS_FIELD_NUMBER;
        hash = (53 * hash) + getJSONSchemasList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps
     * or an array of JSONSchemaProps. Mainly here for serialization purposes.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray)
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArrayOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSchemaFieldBuilder();
          getJSONSchemasFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        if (jSONSchemasBuilder_ == null) {
          jSONSchemas_ = java.util.Collections.emptyList();
        } else {
          jSONSchemas_ = null;
          jSONSchemasBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray result = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray result) {
        if (jSONSchemasBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            jSONSchemas_ = java.util.Collections.unmodifiableList(jSONSchemas_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.jSONSchemas_ = jSONSchemas_;
        } else {
          result.jSONSchemas_ = jSONSchemasBuilder_.build();
        }
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.schema_ = schemaBuilder_ == null
              ? schema_
              : schemaBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray.getDefaultInstance()) return this;
        if (other.hasSchema()) {
          mergeSchema(other.getSchema());
        }
        if (jSONSchemasBuilder_ == null) {
          if (!other.jSONSchemas_.isEmpty()) {
            if (jSONSchemas_.isEmpty()) {
              jSONSchemas_ = other.jSONSchemas_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureJSONSchemasIsMutable();
              jSONSchemas_.addAll(other.jSONSchemas_);
            }
            onChanged();
          }
        } else {
          if (!other.jSONSchemas_.isEmpty()) {
            if (jSONSchemasBuilder_.isEmpty()) {
              jSONSchemasBuilder_.dispose();
              jSONSchemasBuilder_ = null;
              jSONSchemas_ = other.jSONSchemas_;
              bitField0_ = (bitField0_ & ~0x00000002);
              jSONSchemasBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getJSONSchemasFieldBuilder() : null;
            } else {
              jSONSchemasBuilder_.addAllMessages(other.jSONSchemas_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps schema_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> schemaBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       * @return Whether the schema field is set.
       */
      public boolean hasSchema() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       * @return The schema.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema() {
        if (schemaBuilder_ == null) {
          return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
        } else {
          return schemaBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder setSchema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (schemaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          schema_ = value;
        } else {
          schemaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder setSchema(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (schemaBuilder_ == null) {
          schema_ = builderForValue.build();
        } else {
          schemaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder mergeSchema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (schemaBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            schema_ != null &&
            schema_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance()) {
            getSchemaBuilder().mergeFrom(value);
          } else {
            schema_ = value;
          }
        } else {
          schemaBuilder_.mergeFrom(value);
        }
        if (schema_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder clearSchema() {
        bitField0_ = (bitField0_ & ~0x00000001);
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getSchemaBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSchemaFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder() {
        if (schemaBuilder_ != null) {
          return schemaBuilder_.getMessageOrBuilder();
        } else {
          return schema_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getSchemaFieldBuilder() {
        if (schemaBuilder_ == null) {
          schemaBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  getSchema(),
                  getParentForChildren(),
                  isClean());
          schema_ = null;
        }
        return schemaBuilder_;
      }

      private java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> jSONSchemas_ =
        java.util.Collections.emptyList();
      private void ensureJSONSchemasIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          jSONSchemas_ = new java.util.ArrayList<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps>(jSONSchemas_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> jSONSchemasBuilder_;

      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> getJSONSchemasList() {
        if (jSONSchemasBuilder_ == null) {
          return java.util.Collections.unmodifiableList(jSONSchemas_);
        } else {
          return jSONSchemasBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public int getJSONSchemasCount() {
        if (jSONSchemasBuilder_ == null) {
          return jSONSchemas_.size();
        } else {
          return jSONSchemasBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getJSONSchemas(int index) {
        if (jSONSchemasBuilder_ == null) {
          return jSONSchemas_.get(index);
        } else {
          return jSONSchemasBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder setJSONSchemas(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (jSONSchemasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureJSONSchemasIsMutable();
          jSONSchemas_.set(index, value);
          onChanged();
        } else {
          jSONSchemasBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder setJSONSchemas(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (jSONSchemasBuilder_ == null) {
          ensureJSONSchemasIsMutable();
          jSONSchemas_.set(index, builderForValue.build());
          onChanged();
        } else {
          jSONSchemasBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder addJSONSchemas(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (jSONSchemasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureJSONSchemasIsMutable();
          jSONSchemas_.add(value);
          onChanged();
        } else {
          jSONSchemasBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder addJSONSchemas(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (jSONSchemasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureJSONSchemasIsMutable();
          jSONSchemas_.add(index, value);
          onChanged();
        } else {
          jSONSchemasBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder addJSONSchemas(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (jSONSchemasBuilder_ == null) {
          ensureJSONSchemasIsMutable();
          jSONSchemas_.add(builderForValue.build());
          onChanged();
        } else {
          jSONSchemasBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder addJSONSchemas(
          int index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (jSONSchemasBuilder_ == null) {
          ensureJSONSchemasIsMutable();
          jSONSchemas_.add(index, builderForValue.build());
          onChanged();
        } else {
          jSONSchemasBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder addAllJSONSchemas(
          java.lang.Iterable<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps> values) {
        if (jSONSchemasBuilder_ == null) {
          ensureJSONSchemasIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, jSONSchemas_);
          onChanged();
        } else {
          jSONSchemasBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder clearJSONSchemas() {
        if (jSONSchemasBuilder_ == null) {
          jSONSchemas_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          jSONSchemasBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public Builder removeJSONSchemas(int index) {
        if (jSONSchemasBuilder_ == null) {
          ensureJSONSchemasIsMutable();
          jSONSchemas_.remove(index);
          onChanged();
        } else {
          jSONSchemasBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getJSONSchemasBuilder(
          int index) {
        return getJSONSchemasFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getJSONSchemasOrBuilder(
          int index) {
        if (jSONSchemasBuilder_ == null) {
          return jSONSchemas_.get(index);  } else {
          return jSONSchemasBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public java.util.List<? extends io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
           getJSONSchemasOrBuilderList() {
        if (jSONSchemasBuilder_ != null) {
          return jSONSchemasBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(jSONSchemas_);
        }
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addJSONSchemasBuilder() {
        return getJSONSchemasFieldBuilder().addBuilder(
            io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder addJSONSchemasBuilder(
          int index) {
        return getJSONSchemasFieldBuilder().addBuilder(
            index, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance());
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps jSONSchemas = 2;</code>
       */
      public java.util.List<io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder> 
           getJSONSchemasBuilderList() {
        return getJSONSchemasFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getJSONSchemasFieldBuilder() {
        if (jSONSchemasBuilder_ == null) {
          jSONSchemasBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  jSONSchemas_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          jSONSchemas_ = null;
        }
        return jSONSchemasBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrArray)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrArray getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JSONSchemaPropsOrBoolOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional bool allows = 1;</code>
     * @return Whether the allows field is set.
     */
    boolean hasAllows();
    /**
     * <code>optional bool allows = 1;</code>
     * @return The allows.
     */
    boolean getAllows();

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
     * @return Whether the schema field is set.
     */
    boolean hasSchema();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
     * @return The schema.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder();
  }
  /**
   * <pre>
   * JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value.
   * Defaults to true for the boolean property.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool}
   */
  public static final class JSONSchemaPropsOrBool extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool)
      JSONSchemaPropsOrBoolOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        JSONSchemaPropsOrBool.class.getName());
    }
    // Use JSONSchemaPropsOrBool.newBuilder() to construct.
    private JSONSchemaPropsOrBool(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private JSONSchemaPropsOrBool() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder.class);
    }

    private int bitField0_;
    public static final int ALLOWS_FIELD_NUMBER = 1;
    private boolean allows_ = false;
    /**
     * <code>optional bool allows = 1;</code>
     * @return Whether the allows field is set.
     */
    @java.lang.Override
    public boolean hasAllows() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional bool allows = 1;</code>
     * @return The allows.
     */
    @java.lang.Override
    public boolean getAllows() {
      return allows_;
    }

    public static final int SCHEMA_FIELD_NUMBER = 2;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps schema_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
     * @return Whether the schema field is set.
     */
    @java.lang.Override
    public boolean hasSchema() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
     * @return The schema.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBool(1, allows_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getSchema());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, allows_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSchema());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasAllows() != other.hasAllows()) return false;
      if (hasAllows()) {
        if (getAllows()
            != other.getAllows()) return false;
      }
      if (hasSchema() != other.hasSchema()) return false;
      if (hasSchema()) {
        if (!getSchema()
            .equals(other.getSchema())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasAllows()) {
        hash = (37 * hash) + ALLOWS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getAllows());
      }
      if (hasSchema()) {
        hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getSchema().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value.
     * Defaults to true for the boolean property.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool)
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBoolOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSchemaFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        allows_ = false;
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool result = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.allows_ = allows_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.schema_ = schemaBuilder_ == null
              ? schema_
              : schemaBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool.getDefaultInstance()) return this;
        if (other.hasAllows()) {
          setAllows(other.getAllows());
        }
        if (other.hasSchema()) {
          mergeSchema(other.getSchema());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private boolean allows_ ;
      /**
       * <code>optional bool allows = 1;</code>
       * @return Whether the allows field is set.
       */
      @java.lang.Override
      public boolean hasAllows() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional bool allows = 1;</code>
       * @return The allows.
       */
      @java.lang.Override
      public boolean getAllows() {
        return allows_;
      }
      /**
       * <code>optional bool allows = 1;</code>
       * @param value The allows to set.
       * @return This builder for chaining.
       */
      public Builder setAllows(boolean value) {

        allows_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool allows = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAllows() {
        bitField0_ = (bitField0_ & ~0x00000001);
        allows_ = false;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps schema_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> schemaBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       * @return Whether the schema field is set.
       */
      public boolean hasSchema() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       * @return The schema.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema() {
        if (schemaBuilder_ == null) {
          return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
        } else {
          return schemaBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       */
      public Builder setSchema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (schemaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          schema_ = value;
        } else {
          schemaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       */
      public Builder setSchema(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (schemaBuilder_ == null) {
          schema_ = builderForValue.build();
        } else {
          schemaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       */
      public Builder mergeSchema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (schemaBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            schema_ != null &&
            schema_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance()) {
            getSchemaBuilder().mergeFrom(value);
          } else {
            schema_ = value;
          }
        } else {
          schemaBuilder_.mergeFrom(value);
        }
        if (schema_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       */
      public Builder clearSchema() {
        bitField0_ = (bitField0_ & ~0x00000002);
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getSchemaBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getSchemaFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder() {
        if (schemaBuilder_ != null) {
          return schemaBuilder_.getMessageOrBuilder();
        } else {
          return schema_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getSchemaFieldBuilder() {
        if (schemaBuilder_ == null) {
          schemaBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  getSchema(),
                  getParentForChildren(),
                  isClean());
          schema_ = null;
        }
        return schemaBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrBool)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBool getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JSONSchemaPropsOrStringArrayOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return Whether the schema field is set.
     */
    boolean hasSchema();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return The schema.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema();
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder();

    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @return A list containing the property.
     */
    java.util.List<java.lang.String>
        getPropertyList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @return The count of property.
     */
    int getPropertyCount();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @param index The index of the element to return.
     * @return The property at the given index.
     */
    java.lang.String getProperty(int index);
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the property at the given index.
     */
    com.google.protobuf.ByteString
        getPropertyBytes(int index);
  }
  /**
   * <pre>
   * JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray}
   */
  public static final class JSONSchemaPropsOrStringArray extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray)
      JSONSchemaPropsOrStringArrayOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        JSONSchemaPropsOrStringArray.class.getName());
    }
    // Use JSONSchemaPropsOrStringArray.newBuilder() to construct.
    private JSONSchemaPropsOrStringArray(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private JSONSchemaPropsOrStringArray() {
      property_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder.class);
    }

    private int bitField0_;
    public static final int SCHEMA_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps schema_;
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return Whether the schema field is set.
     */
    @java.lang.Override
    public boolean hasSchema() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     * @return The schema.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
    }
    /**
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder() {
      return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
    }

    public static final int PROPERTY_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList property_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @return A list containing the property.
     */
    public com.google.protobuf.ProtocolStringList
        getPropertyList() {
      return property_;
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @return The count of property.
     */
    public int getPropertyCount() {
      return property_.size();
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @param index The index of the element to return.
     * @return The property at the given index.
     */
    public java.lang.String getProperty(int index) {
      return property_.get(index);
    }
    /**
     * <pre>
     * +listType=atomic
     * </pre>
     *
     * <code>repeated string property = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the property at the given index.
     */
    public com.google.protobuf.ByteString
        getPropertyBytes(int index) {
      return property_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSchema());
      }
      for (int i = 0; i < property_.size(); i++) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, property_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSchema());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < property_.size(); i++) {
          dataSize += computeStringSizeNoTag(property_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPropertyList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasSchema() != other.hasSchema()) return false;
      if (hasSchema()) {
        if (!getSchema()
            .equals(other.getSchema())) return false;
      }
      if (!getPropertyList()
          .equals(other.getPropertyList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSchema()) {
        hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
        hash = (53 * hash) + getSchema().hashCode();
      }
      if (getPropertyCount() > 0) {
        hash = (37 * hash) + PROPERTY_FIELD_NUMBER;
        hash = (53 * hash) + getPropertyList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray)
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArrayOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.class, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getSchemaFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        property_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray result = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.schema_ = schemaBuilder_ == null
              ? schema_
              : schemaBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          property_.makeImmutable();
          result.property_ = property_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray.getDefaultInstance()) return this;
        if (other.hasSchema()) {
          mergeSchema(other.getSchema());
        }
        if (!other.property_.isEmpty()) {
          if (property_.isEmpty()) {
            property_ = other.property_;
            bitField0_ |= 0x00000002;
          } else {
            ensurePropertyIsMutable();
            property_.addAll(other.property_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps schema_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> schemaBuilder_;
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       * @return Whether the schema field is set.
       */
      public boolean hasSchema() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       * @return The schema.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps getSchema() {
        if (schemaBuilder_ == null) {
          return schema_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
        } else {
          return schemaBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder setSchema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (schemaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          schema_ = value;
        } else {
          schemaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder setSchema(
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder builderForValue) {
        if (schemaBuilder_ == null) {
          schema_ = builderForValue.build();
        } else {
          schemaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder mergeSchema(io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps value) {
        if (schemaBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            schema_ != null &&
            schema_ != io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance()) {
            getSchemaBuilder().mergeFrom(value);
          } else {
            schema_ = value;
          }
        } else {
          schemaBuilder_.mergeFrom(value);
        }
        if (schema_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public Builder clearSchema() {
        bitField0_ = (bitField0_ & ~0x00000001);
        schema_ = null;
        if (schemaBuilder_ != null) {
          schemaBuilder_.dispose();
          schemaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder getSchemaBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSchemaFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder getSchemaOrBuilder() {
        if (schemaBuilder_ != null) {
          return schemaBuilder_.getMessageOrBuilder();
        } else {
          return schema_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.getDefaultInstance() : schema_;
        }
      }
      /**
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps schema = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder> 
          getSchemaFieldBuilder() {
        if (schemaBuilder_ == null) {
          schemaBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaProps.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrBuilder>(
                  getSchema(),
                  getParentForChildren(),
                  isClean());
          schema_ = null;
        }
        return schemaBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList property_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePropertyIsMutable() {
        if (!property_.isModifiable()) {
          property_ = new com.google.protobuf.LazyStringArrayList(property_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @return A list containing the property.
       */
      public com.google.protobuf.ProtocolStringList
          getPropertyList() {
        property_.makeImmutable();
        return property_;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @return The count of property.
       */
      public int getPropertyCount() {
        return property_.size();
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @param index The index of the element to return.
       * @return The property at the given index.
       */
      public java.lang.String getProperty(int index) {
        return property_.get(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the property at the given index.
       */
      public com.google.protobuf.ByteString
          getPropertyBytes(int index) {
        return property_.getByteString(index);
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @param index The index to set the value at.
       * @param value The property to set.
       * @return This builder for chaining.
       */
      public Builder setProperty(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePropertyIsMutable();
        property_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @param value The property to add.
       * @return This builder for chaining.
       */
      public Builder addProperty(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePropertyIsMutable();
        property_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @param values The property to add.
       * @return This builder for chaining.
       */
      public Builder addAllProperty(
          java.lang.Iterable<java.lang.String> values) {
        ensurePropertyIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, property_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearProperty() {
        property_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * +listType=atomic
       * </pre>
       *
       * <code>repeated string property = 2;</code>
       * @param value The bytes of the property to add.
       * @return This builder for chaining.
       */
      public Builder addPropertyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePropertyIsMutable();
        property_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaPropsOrStringArray)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.JSONSchemaPropsOrStringArray getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SelectableFieldOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
     * field selector value.
     * Only JSON paths without the array notation are allowed.
     * Must point to a field of type string, boolean or integer. Types with enum values
     * and strings with formats are allowed.
     * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
     * Must not point to metdata fields.
     * Required.
     * </pre>
     *
     * <code>optional string jsonPath = 1;</code>
     * @return Whether the jsonPath field is set.
     */
    boolean hasJsonPath();
    /**
     * <pre>
     * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
     * field selector value.
     * Only JSON paths without the array notation are allowed.
     * Must point to a field of type string, boolean or integer. Types with enum values
     * and strings with formats are allowed.
     * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
     * Must not point to metdata fields.
     * Required.
     * </pre>
     *
     * <code>optional string jsonPath = 1;</code>
     * @return The jsonPath.
     */
    java.lang.String getJsonPath();
    /**
     * <pre>
     * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
     * field selector value.
     * Only JSON paths without the array notation are allowed.
     * Must point to a field of type string, boolean or integer. Types with enum values
     * and strings with formats are allowed.
     * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
     * Must not point to metdata fields.
     * Required.
     * </pre>
     *
     * <code>optional string jsonPath = 1;</code>
     * @return The bytes for jsonPath.
     */
    com.google.protobuf.ByteString
        getJsonPathBytes();
  }
  /**
   * <pre>
   * SelectableField specifies the JSON path of a field that may be used with field selectors.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField}
   */
  public static final class SelectableField extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField)
      SelectableFieldOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        SelectableField.class.getName());
    }
    // Use SelectableField.newBuilder() to construct.
    private SelectableField(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private SelectableField() {
      jsonPath_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.class, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder.class);
    }

    private int bitField0_;
    public static final int JSONPATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object jsonPath_ = "";
    /**
     * <pre>
     * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
     * field selector value.
     * Only JSON paths without the array notation are allowed.
     * Must point to a field of type string, boolean or integer. Types with enum values
     * and strings with formats are allowed.
     * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
     * Must not point to metdata fields.
     * Required.
     * </pre>
     *
     * <code>optional string jsonPath = 1;</code>
     * @return Whether the jsonPath field is set.
     */
    @java.lang.Override
    public boolean hasJsonPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
     * field selector value.
     * Only JSON paths without the array notation are allowed.
     * Must point to a field of type string, boolean or integer. Types with enum values
     * and strings with formats are allowed.
     * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
     * Must not point to metdata fields.
     * Required.
     * </pre>
     *
     * <code>optional string jsonPath = 1;</code>
     * @return The jsonPath.
     */
    @java.lang.Override
    public java.lang.String getJsonPath() {
      java.lang.Object ref = jsonPath_;
      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()) {
          jsonPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
     * field selector value.
     * Only JSON paths without the array notation are allowed.
     * Must point to a field of type string, boolean or integer. Types with enum values
     * and strings with formats are allowed.
     * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
     * Must not point to metdata fields.
     * Required.
     * </pre>
     *
     * <code>optional string jsonPath = 1;</code>
     * @return The bytes for jsonPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getJsonPathBytes() {
      java.lang.Object ref = jsonPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        jsonPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, jsonPath_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, jsonPath_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasJsonPath() != other.hasJsonPath()) return false;
      if (hasJsonPath()) {
        if (!getJsonPath()
            .equals(other.getJsonPath())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * SelectableField specifies the JSON path of a field that may be used with field selectors.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField)
        io.kubernetes.client.proto.V1beta1Apiextensions.SelectableFieldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.class, io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField result = new io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.jsonPath_ = jsonPath_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField.getDefaultInstance()) return this;
        if (other.hasJsonPath()) {
          jsonPath_ = other.jsonPath_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object jsonPath_ = "";
      /**
       * <pre>
       * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
       * field selector value.
       * Only JSON paths without the array notation are allowed.
       * Must point to a field of type string, boolean or integer. Types with enum values
       * and strings with formats are allowed.
       * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
       * Must not point to metdata fields.
       * Required.
       * </pre>
       *
       * <code>optional string jsonPath = 1;</code>
       * @return Whether the jsonPath field is set.
       */
      public boolean hasJsonPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
       * field selector value.
       * Only JSON paths without the array notation are allowed.
       * Must point to a field of type string, boolean or integer. Types with enum values
       * and strings with formats are allowed.
       * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
       * Must not point to metdata fields.
       * Required.
       * </pre>
       *
       * <code>optional string jsonPath = 1;</code>
       * @return The jsonPath.
       */
      public java.lang.String getJsonPath() {
        java.lang.Object ref = jsonPath_;
        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()) {
            jsonPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
       * field selector value.
       * Only JSON paths without the array notation are allowed.
       * Must point to a field of type string, boolean or integer. Types with enum values
       * and strings with formats are allowed.
       * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
       * Must not point to metdata fields.
       * Required.
       * </pre>
       *
       * <code>optional string jsonPath = 1;</code>
       * @return The bytes for jsonPath.
       */
      public com.google.protobuf.ByteString
          getJsonPathBytes() {
        java.lang.Object ref = jsonPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          jsonPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
       * field selector value.
       * Only JSON paths without the array notation are allowed.
       * Must point to a field of type string, boolean or integer. Types with enum values
       * and strings with formats are allowed.
       * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
       * Must not point to metdata fields.
       * Required.
       * </pre>
       *
       * <code>optional string jsonPath = 1;</code>
       * @param value The jsonPath to set.
       * @return This builder for chaining.
       */
      public Builder setJsonPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        jsonPath_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
       * field selector value.
       * Only JSON paths without the array notation are allowed.
       * Must point to a field of type string, boolean or integer. Types with enum values
       * and strings with formats are allowed.
       * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
       * Must not point to metdata fields.
       * Required.
       * </pre>
       *
       * <code>optional string jsonPath = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearJsonPath() {
        jsonPath_ = getDefaultInstance().getJsonPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * jsonPath is a simple JSON path which is evaluated against each custom resource to produce a
       * field selector value.
       * Only JSON paths without the array notation are allowed.
       * Must point to a field of type string, boolean or integer. Types with enum values
       * and strings with formats are allowed.
       * If jsonPath refers to absent field in a resource, the jsonPath evaluates to an empty string.
       * Must not point to metdata fields.
       * Required.
       * </pre>
       *
       * <code>optional string jsonPath = 1;</code>
       * @param value The bytes for jsonPath to set.
       * @return This builder for chaining.
       */
      public Builder setJsonPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        jsonPath_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.SelectableField)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.SelectableField getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceReferenceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * namespace is the namespace of the service.
     * Required
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return Whether the namespace field is set.
     */
    boolean hasNamespace();
    /**
     * <pre>
     * namespace is the namespace of the service.
     * Required
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return The namespace.
     */
    java.lang.String getNamespace();
    /**
     * <pre>
     * namespace is the namespace of the service.
     * Required
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return The bytes for namespace.
     */
    com.google.protobuf.ByteString
        getNamespaceBytes();

    /**
     * <pre>
     * name is the name of the service.
     * Required
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * name is the name of the service.
     * Required
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * name is the name of the service.
     * Required
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * path is an optional URL path at which the webhook will be contacted.
     * +optional
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * path is an optional URL path at which the webhook will be contacted.
     * +optional
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path is an optional URL path at which the webhook will be contacted.
     * +optional
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * port is an optional service port at which the webhook will be contacted.
     * `port` should be a valid port number (1-65535, inclusive).
     * Defaults to 443 for backward compatibility.
     * +optional
     * </pre>
     *
     * <code>optional int32 port = 4;</code>
     * @return Whether the port field is set.
     */
    boolean hasPort();
    /**
     * <pre>
     * port is an optional service port at which the webhook will be contacted.
     * `port` should be a valid port number (1-65535, inclusive).
     * Defaults to 443 for backward compatibility.
     * +optional
     * </pre>
     *
     * <code>optional int32 port = 4;</code>
     * @return The port.
     */
    int getPort();
  }
  /**
   * <pre>
   * ServiceReference holds a reference to Service.legacy.k8s.io
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference}
   */
  public static final class ServiceReference extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference)
      ServiceReferenceOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        ServiceReference.class.getName());
    }
    // Use ServiceReference.newBuilder() to construct.
    private ServiceReference(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ServiceReference() {
      namespace_ = "";
      name_ = "";
      path_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.class, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.Builder.class);
    }

    private int bitField0_;
    public static final int NAMESPACE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object namespace_ = "";
    /**
     * <pre>
     * namespace is the namespace of the service.
     * Required
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return Whether the namespace field is set.
     */
    @java.lang.Override
    public boolean hasNamespace() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * namespace is the namespace of the service.
     * Required
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return The namespace.
     */
    @java.lang.Override
    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 is the namespace of the service.
     * Required
     * </pre>
     *
     * <code>optional string namespace = 1;</code>
     * @return The bytes for namespace.
     */
    @java.lang.Override
    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;
      }
    }

    public static final int NAME_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * name is the name of the service.
     * Required
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return Whether the name field is set.
     */
    @java.lang.Override
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * name is the name of the service.
     * Required
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    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 the service.
     * Required
     * </pre>
     *
     * <code>optional string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    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 PATH_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * path is an optional URL path at which the webhook will be contacted.
     * +optional
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * path is an optional URL path at which the webhook will be contacted.
     * +optional
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          path_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * path is an optional URL path at which the webhook will be contacted.
     * +optional
     * </pre>
     *
     * <code>optional string path = 3;</code>
     * @return The bytes for path.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PORT_FIELD_NUMBER = 4;
    private int port_ = 0;
    /**
     * <pre>
     * port is an optional service port at which the webhook will be contacted.
     * `port` should be a valid port number (1-65535, inclusive).
     * Defaults to 443 for backward compatibility.
     * +optional
     * </pre>
     *
     * <code>optional int32 port = 4;</code>
     * @return Whether the port field is set.
     */
    @java.lang.Override
    public boolean hasPort() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * port is an optional service port at which the webhook will be contacted.
     * `port` should be a valid port number (1-65535, inclusive).
     * Defaults to 443 for backward compatibility.
     * +optional
     * </pre>
     *
     * <code>optional int32 port = 4;</code>
     * @return The port.
     */
    @java.lang.Override
    public int getPort() {
      return port_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, namespace_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, name_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, path_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(4, port_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, namespace_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, name_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, path_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, port_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasNamespace() != other.hasNamespace()) return false;
      if (hasNamespace()) {
        if (!getNamespace()
            .equals(other.getNamespace())) return false;
      }
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (hasPort() != other.hasPort()) return false;
      if (hasPort()) {
        if (getPort()
            != other.getPort()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasNamespace()) {
        hash = (37 * hash) + NAMESPACE_FIELD_NUMBER;
        hash = (53 * hash) + getNamespace().hashCode();
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (hasPort()) {
        hash = (37 * hash) + PORT_FIELD_NUMBER;
        hash = (53 * hash) + getPort();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ServiceReference holds a reference to Service.legacy.k8s.io
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference)
        io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReferenceOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.class, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference result = new io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.namespace_ = namespace_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.name_ = name_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.port_ = port_;
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.getDefaultInstance()) return this;
        if (other.hasNamespace()) {
          namespace_ = other.namespace_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasName()) {
          name_ = other.name_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasPort()) {
          setPort(other.getPort());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object namespace_ = "";
      /**
       * <pre>
       * namespace is the namespace of the service.
       * Required
       * </pre>
       *
       * <code>optional string namespace = 1;</code>
       * @return Whether the namespace field is set.
       */
      public boolean hasNamespace() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * namespace is the namespace of the service.
       * Required
       * </pre>
       *
       * <code>optional string namespace = 1;</code>
       * @return The namespace.
       */
      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 is the namespace of the service.
       * Required
       * </pre>
       *
       * <code>optional string namespace = 1;</code>
       * @return The bytes for namespace.
       */
      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 is the namespace of the service.
       * Required
       * </pre>
       *
       * <code>optional string namespace = 1;</code>
       * @param value The namespace to set.
       * @return This builder for chaining.
       */
      public Builder setNamespace(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        namespace_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespace is the namespace of the service.
       * Required
       * </pre>
       *
       * <code>optional string namespace = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNamespace() {
        namespace_ = getDefaultInstance().getNamespace();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * namespace is the namespace of the service.
       * Required
       * </pre>
       *
       * <code>optional string namespace = 1;</code>
       * @param value The bytes for namespace to set.
       * @return This builder for chaining.
       */
      public Builder setNamespaceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        namespace_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * name is the name of the service.
       * Required
       * </pre>
       *
       * <code>optional string name = 2;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * name is the name of the service.
       * Required
       * </pre>
       *
       * <code>optional string name = 2;</code>
       * @return The name.
       */
      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 the service.
       * Required
       * </pre>
       *
       * <code>optional string name = 2;</code>
       * @return The bytes for name.
       */
      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 the service.
       * Required
       * </pre>
       *
       * <code>optional string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name is the name of the service.
       * Required
       * </pre>
       *
       * <code>optional string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * name is the name of the service.
       * Required
       * </pre>
       *
       * <code>optional string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path is an optional URL path at which the webhook will be contacted.
       * +optional
       * </pre>
       *
       * <code>optional string path = 3;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * path is an optional URL path at which the webhook will be contacted.
       * +optional
       * </pre>
       *
       * <code>optional string path = 3;</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            path_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path is an optional URL path at which the webhook will be contacted.
       * +optional
       * </pre>
       *
       * <code>optional string path = 3;</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path is an optional URL path at which the webhook will be contacted.
       * +optional
       * </pre>
       *
       * <code>optional string path = 3;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is an optional URL path at which the webhook will be contacted.
       * +optional
       * </pre>
       *
       * <code>optional string path = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path is an optional URL path at which the webhook will be contacted.
       * +optional
       * </pre>
       *
       * <code>optional string path = 3;</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private int port_ ;
      /**
       * <pre>
       * port is an optional service port at which the webhook will be contacted.
       * `port` should be a valid port number (1-65535, inclusive).
       * Defaults to 443 for backward compatibility.
       * +optional
       * </pre>
       *
       * <code>optional int32 port = 4;</code>
       * @return Whether the port field is set.
       */
      @java.lang.Override
      public boolean hasPort() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * port is an optional service port at which the webhook will be contacted.
       * `port` should be a valid port number (1-65535, inclusive).
       * Defaults to 443 for backward compatibility.
       * +optional
       * </pre>
       *
       * <code>optional int32 port = 4;</code>
       * @return The port.
       */
      @java.lang.Override
      public int getPort() {
        return port_;
      }
      /**
       * <pre>
       * port is an optional service port at which the webhook will be contacted.
       * `port` should be a valid port number (1-65535, inclusive).
       * Defaults to 443 for backward compatibility.
       * +optional
       * </pre>
       *
       * <code>optional int32 port = 4;</code>
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(int value) {

        port_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * port is an optional service port at which the webhook will be contacted.
       * `port` should be a valid port number (1-65535, inclusive).
       * Defaults to 443 for backward compatibility.
       * +optional
       * </pre>
       *
       * <code>optional int32 port = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        bitField0_ = (bitField0_ & ~0x00000008);
        port_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ValidationRuleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Rule represents the expression which will be evaluated by CEL.
     * ref: https://github.com/google/cel-spec
     * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
     * The `self` variable in the CEL expression is bound to the scoped value.
     * Example:
     * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
     *
     * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
     * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
     * absent fields in CEL expressions.
     * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
     * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
     * are accessible via CEL macros and functions such as `self.all(...)`.
     * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
     * functions.
     * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
     * Examples:
     * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
     * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
     * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
     *
     * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
     * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
     *
     * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
     * expressions. This includes:
     * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
     * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
     * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
     * - An array where the items schema is of an "unknown type"
     * - An object where the additionalProperties schema is of an "unknown type"
     *
     * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
     * Accessible property names are escaped according to the following rules when accessed in the expression:
     * - '__' escapes to '__underscores__'
     * - '.' escapes to '__dot__'
     * - '-' escapes to '__dash__'
     * - '/' escapes to '__slash__'
     * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
     * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
     * "import", "let", "loop", "package", "namespace", "return".
     * Examples:
     * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
     * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
     * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
     *
     * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
     * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
     * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
     * non-intersecting elements in `Y` are appended, retaining their partial order.
     * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
     * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
     * non-intersecting keys are appended, retaining their partial order.
     *
     * If `rule` makes use of the `oldSelf` variable it is implicitly a
     * `transition rule`.
     *
     * By default, the `oldSelf` variable is the same type as `self`.
     * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
     * variable whose value() is the same type as `self`.
     * See the documentation for the `optionalOldSelf` field for details.
     *
     * Transition rules by default are applied only on UPDATE requests and are
     * skipped if an old value could not be found. You can opt a transition
     * rule into unconditional evaluation by setting `optionalOldSelf` to true.
     * </pre>
     *
     * <code>optional string rule = 1;</code>
     * @return Whether the rule field is set.
     */
    boolean hasRule();
    /**
     * <pre>
     * Rule represents the expression which will be evaluated by CEL.
     * ref: https://github.com/google/cel-spec
     * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
     * The `self` variable in the CEL expression is bound to the scoped value.
     * Example:
     * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
     *
     * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
     * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
     * absent fields in CEL expressions.
     * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
     * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
     * are accessible via CEL macros and functions such as `self.all(...)`.
     * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
     * functions.
     * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
     * Examples:
     * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
     * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
     * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
     *
     * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
     * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
     *
     * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
     * expressions. This includes:
     * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
     * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
     * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
     * - An array where the items schema is of an "unknown type"
     * - An object where the additionalProperties schema is of an "unknown type"
     *
     * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
     * Accessible property names are escaped according to the following rules when accessed in the expression:
     * - '__' escapes to '__underscores__'
     * - '.' escapes to '__dot__'
     * - '-' escapes to '__dash__'
     * - '/' escapes to '__slash__'
     * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
     * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
     * "import", "let", "loop", "package", "namespace", "return".
     * Examples:
     * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
     * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
     * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
     *
     * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
     * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
     * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
     * non-intersecting elements in `Y` are appended, retaining their partial order.
     * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
     * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
     * non-intersecting keys are appended, retaining their partial order.
     *
     * If `rule` makes use of the `oldSelf` variable it is implicitly a
     * `transition rule`.
     *
     * By default, the `oldSelf` variable is the same type as `self`.
     * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
     * variable whose value() is the same type as `self`.
     * See the documentation for the `optionalOldSelf` field for details.
     *
     * Transition rules by default are applied only on UPDATE requests and are
     * skipped if an old value could not be found. You can opt a transition
     * rule into unconditional evaluation by setting `optionalOldSelf` to true.
     * </pre>
     *
     * <code>optional string rule = 1;</code>
     * @return The rule.
     */
    java.lang.String getRule();
    /**
     * <pre>
     * Rule represents the expression which will be evaluated by CEL.
     * ref: https://github.com/google/cel-spec
     * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
     * The `self` variable in the CEL expression is bound to the scoped value.
     * Example:
     * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
     *
     * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
     * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
     * absent fields in CEL expressions.
     * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
     * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
     * are accessible via CEL macros and functions such as `self.all(...)`.
     * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
     * functions.
     * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
     * Examples:
     * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
     * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
     * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
     *
     * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
     * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
     *
     * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
     * expressions. This includes:
     * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
     * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
     * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
     * - An array where the items schema is of an "unknown type"
     * - An object where the additionalProperties schema is of an "unknown type"
     *
     * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
     * Accessible property names are escaped according to the following rules when accessed in the expression:
     * - '__' escapes to '__underscores__'
     * - '.' escapes to '__dot__'
     * - '-' escapes to '__dash__'
     * - '/' escapes to '__slash__'
     * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
     * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
     * "import", "let", "loop", "package", "namespace", "return".
     * Examples:
     * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
     * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
     * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
     *
     * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
     * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
     * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
     * non-intersecting elements in `Y` are appended, retaining their partial order.
     * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
     * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
     * non-intersecting keys are appended, retaining their partial order.
     *
     * If `rule` makes use of the `oldSelf` variable it is implicitly a
     * `transition rule`.
     *
     * By default, the `oldSelf` variable is the same type as `self`.
     * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
     * variable whose value() is the same type as `self`.
     * See the documentation for the `optionalOldSelf` field for details.
     *
     * Transition rules by default are applied only on UPDATE requests and are
     * skipped if an old value could not be found. You can opt a transition
     * rule into unconditional evaluation by setting `optionalOldSelf` to true.
     * </pre>
     *
     * <code>optional string rule = 1;</code>
     * @return The bytes for rule.
     */
    com.google.protobuf.ByteString
        getRuleBytes();

    /**
     * <pre>
     * Message represents the message displayed when validation fails. The message is required if the Rule contains
     * line breaks. The message must not contain line breaks.
     * If unset, the message is "failed rule: {Rule}".
     * e.g. "must be a URL with the host matching spec.host"
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return Whether the message field is set.
     */
    boolean hasMessage();
    /**
     * <pre>
     * Message represents the message displayed when validation fails. The message is required if the Rule contains
     * line breaks. The message must not contain line breaks.
     * If unset, the message is "failed rule: {Rule}".
     * e.g. "must be a URL with the host matching spec.host"
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * <pre>
     * Message represents the message displayed when validation fails. The message is required if the Rule contains
     * line breaks. The message must not contain line breaks.
     * If unset, the message is "failed rule: {Rule}".
     * e.g. "must be a URL with the host matching spec.host"
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * <pre>
     * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
     * Since messageExpression is used as a failure message, it must evaluate to a string.
     * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
     * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
     * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
     * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
     * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
     * messageExpression has access to all the same variables as the rule; the only difference is the return type.
     * Example:
     * "x must be less than max ("+string(self.max)+")"
     * +optional
     * </pre>
     *
     * <code>optional string messageExpression = 3;</code>
     * @return Whether the messageExpression field is set.
     */
    boolean hasMessageExpression();
    /**
     * <pre>
     * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
     * Since messageExpression is used as a failure message, it must evaluate to a string.
     * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
     * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
     * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
     * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
     * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
     * messageExpression has access to all the same variables as the rule; the only difference is the return type.
     * Example:
     * "x must be less than max ("+string(self.max)+")"
     * +optional
     * </pre>
     *
     * <code>optional string messageExpression = 3;</code>
     * @return The messageExpression.
     */
    java.lang.String getMessageExpression();
    /**
     * <pre>
     * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
     * Since messageExpression is used as a failure message, it must evaluate to a string.
     * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
     * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
     * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
     * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
     * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
     * messageExpression has access to all the same variables as the rule; the only difference is the return type.
     * Example:
     * "x must be less than max ("+string(self.max)+")"
     * +optional
     * </pre>
     *
     * <code>optional string messageExpression = 3;</code>
     * @return The bytes for messageExpression.
     */
    com.google.protobuf.ByteString
        getMessageExpressionBytes();

    /**
     * <pre>
     * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
     * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
     * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
     * If not set, default to use "FieldValueInvalid".
     * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return Whether the reason field is set.
     */
    boolean hasReason();
    /**
     * <pre>
     * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
     * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
     * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
     * If not set, default to use "FieldValueInvalid".
     * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The reason.
     */
    java.lang.String getReason();
    /**
     * <pre>
     * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
     * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
     * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
     * If not set, default to use "FieldValueInvalid".
     * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The bytes for reason.
     */
    com.google.protobuf.ByteString
        getReasonBytes();

    /**
     * <pre>
     * fieldPath represents the field path returned when the validation fails.
     * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
     * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
     * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
     * It does not support list numeric index.
     * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
     * Numeric index of array is not supported.
     * For field name which contains special characters, use `['specialName']` to refer the field name.
     * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 5;</code>
     * @return Whether the fieldPath field is set.
     */
    boolean hasFieldPath();
    /**
     * <pre>
     * fieldPath represents the field path returned when the validation fails.
     * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
     * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
     * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
     * It does not support list numeric index.
     * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
     * Numeric index of array is not supported.
     * For field name which contains special characters, use `['specialName']` to refer the field name.
     * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 5;</code>
     * @return The fieldPath.
     */
    java.lang.String getFieldPath();
    /**
     * <pre>
     * fieldPath represents the field path returned when the validation fails.
     * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
     * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
     * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
     * It does not support list numeric index.
     * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
     * Numeric index of array is not supported.
     * For field name which contains special characters, use `['specialName']` to refer the field name.
     * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 5;</code>
     * @return The bytes for fieldPath.
     */
    com.google.protobuf.ByteString
        getFieldPathBytes();

    /**
     * <pre>
     * optionalOldSelf is used to opt a transition rule into evaluation
     * even when the object is first created, or if the old object is
     * missing the value.
     *
     * When enabled `oldSelf` will be a CEL optional whose value will be
     * `None` if there is no old value, or when the object is initially created.
     *
     * You may check for presence of oldSelf using `oldSelf.hasValue()` and
     * unwrap it after checking using `oldSelf.value()`. Check the CEL
     * documentation for Optional types for more information:
     * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
     *
     * May not be set unless `oldSelf` is used in `rule`.
     *
     * +featureGate=CRDValidationRatcheting
     * +optional
     * </pre>
     *
     * <code>optional bool optionalOldSelf = 6;</code>
     * @return Whether the optionalOldSelf field is set.
     */
    boolean hasOptionalOldSelf();
    /**
     * <pre>
     * optionalOldSelf is used to opt a transition rule into evaluation
     * even when the object is first created, or if the old object is
     * missing the value.
     *
     * When enabled `oldSelf` will be a CEL optional whose value will be
     * `None` if there is no old value, or when the object is initially created.
     *
     * You may check for presence of oldSelf using `oldSelf.hasValue()` and
     * unwrap it after checking using `oldSelf.value()`. Check the CEL
     * documentation for Optional types for more information:
     * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
     *
     * May not be set unless `oldSelf` is used in `rule`.
     *
     * +featureGate=CRDValidationRatcheting
     * +optional
     * </pre>
     *
     * <code>optional bool optionalOldSelf = 6;</code>
     * @return The optionalOldSelf.
     */
    boolean getOptionalOldSelf();
  }
  /**
   * <pre>
   * ValidationRule describes a validation rule written in the CEL expression language.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule}
   */
  public static final class ValidationRule extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule)
      ValidationRuleOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        ValidationRule.class.getName());
    }
    // Use ValidationRule.newBuilder() to construct.
    private ValidationRule(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private ValidationRule() {
      rule_ = "";
      message_ = "";
      messageExpression_ = "";
      reason_ = "";
      fieldPath_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.class, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder.class);
    }

    private int bitField0_;
    public static final int RULE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object rule_ = "";
    /**
     * <pre>
     * Rule represents the expression which will be evaluated by CEL.
     * ref: https://github.com/google/cel-spec
     * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
     * The `self` variable in the CEL expression is bound to the scoped value.
     * Example:
     * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
     *
     * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
     * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
     * absent fields in CEL expressions.
     * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
     * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
     * are accessible via CEL macros and functions such as `self.all(...)`.
     * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
     * functions.
     * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
     * Examples:
     * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
     * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
     * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
     *
     * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
     * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
     *
     * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
     * expressions. This includes:
     * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
     * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
     * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
     * - An array where the items schema is of an "unknown type"
     * - An object where the additionalProperties schema is of an "unknown type"
     *
     * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
     * Accessible property names are escaped according to the following rules when accessed in the expression:
     * - '__' escapes to '__underscores__'
     * - '.' escapes to '__dot__'
     * - '-' escapes to '__dash__'
     * - '/' escapes to '__slash__'
     * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
     * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
     * "import", "let", "loop", "package", "namespace", "return".
     * Examples:
     * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
     * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
     * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
     *
     * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
     * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
     * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
     * non-intersecting elements in `Y` are appended, retaining their partial order.
     * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
     * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
     * non-intersecting keys are appended, retaining their partial order.
     *
     * If `rule` makes use of the `oldSelf` variable it is implicitly a
     * `transition rule`.
     *
     * By default, the `oldSelf` variable is the same type as `self`.
     * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
     * variable whose value() is the same type as `self`.
     * See the documentation for the `optionalOldSelf` field for details.
     *
     * Transition rules by default are applied only on UPDATE requests and are
     * skipped if an old value could not be found. You can opt a transition
     * rule into unconditional evaluation by setting `optionalOldSelf` to true.
     * </pre>
     *
     * <code>optional string rule = 1;</code>
     * @return Whether the rule field is set.
     */
    @java.lang.Override
    public boolean hasRule() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Rule represents the expression which will be evaluated by CEL.
     * ref: https://github.com/google/cel-spec
     * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
     * The `self` variable in the CEL expression is bound to the scoped value.
     * Example:
     * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
     *
     * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
     * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
     * absent fields in CEL expressions.
     * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
     * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
     * are accessible via CEL macros and functions such as `self.all(...)`.
     * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
     * functions.
     * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
     * Examples:
     * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
     * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
     * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
     *
     * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
     * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
     *
     * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
     * expressions. This includes:
     * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
     * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
     * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
     * - An array where the items schema is of an "unknown type"
     * - An object where the additionalProperties schema is of an "unknown type"
     *
     * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
     * Accessible property names are escaped according to the following rules when accessed in the expression:
     * - '__' escapes to '__underscores__'
     * - '.' escapes to '__dot__'
     * - '-' escapes to '__dash__'
     * - '/' escapes to '__slash__'
     * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
     * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
     * "import", "let", "loop", "package", "namespace", "return".
     * Examples:
     * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
     * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
     * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
     *
     * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
     * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
     * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
     * non-intersecting elements in `Y` are appended, retaining their partial order.
     * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
     * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
     * non-intersecting keys are appended, retaining their partial order.
     *
     * If `rule` makes use of the `oldSelf` variable it is implicitly a
     * `transition rule`.
     *
     * By default, the `oldSelf` variable is the same type as `self`.
     * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
     * variable whose value() is the same type as `self`.
     * See the documentation for the `optionalOldSelf` field for details.
     *
     * Transition rules by default are applied only on UPDATE requests and are
     * skipped if an old value could not be found. You can opt a transition
     * rule into unconditional evaluation by setting `optionalOldSelf` to true.
     * </pre>
     *
     * <code>optional string rule = 1;</code>
     * @return The rule.
     */
    @java.lang.Override
    public java.lang.String getRule() {
      java.lang.Object ref = rule_;
      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()) {
          rule_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Rule represents the expression which will be evaluated by CEL.
     * ref: https://github.com/google/cel-spec
     * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
     * The `self` variable in the CEL expression is bound to the scoped value.
     * Example:
     * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
     *
     * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
     * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
     * absent fields in CEL expressions.
     * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
     * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
     * are accessible via CEL macros and functions such as `self.all(...)`.
     * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
     * functions.
     * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
     * Examples:
     * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
     * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
     * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
     *
     * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
     * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
     *
     * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
     * expressions. This includes:
     * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
     * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
     * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
     * - An array where the items schema is of an "unknown type"
     * - An object where the additionalProperties schema is of an "unknown type"
     *
     * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
     * Accessible property names are escaped according to the following rules when accessed in the expression:
     * - '__' escapes to '__underscores__'
     * - '.' escapes to '__dot__'
     * - '-' escapes to '__dash__'
     * - '/' escapes to '__slash__'
     * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
     * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
     * "import", "let", "loop", "package", "namespace", "return".
     * Examples:
     * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
     * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
     * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
     *
     * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
     * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
     * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
     * non-intersecting elements in `Y` are appended, retaining their partial order.
     * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
     * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
     * non-intersecting keys are appended, retaining their partial order.
     *
     * If `rule` makes use of the `oldSelf` variable it is implicitly a
     * `transition rule`.
     *
     * By default, the `oldSelf` variable is the same type as `self`.
     * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
     * variable whose value() is the same type as `self`.
     * See the documentation for the `optionalOldSelf` field for details.
     *
     * Transition rules by default are applied only on UPDATE requests and are
     * skipped if an old value could not be found. You can opt a transition
     * rule into unconditional evaluation by setting `optionalOldSelf` to true.
     * </pre>
     *
     * <code>optional string rule = 1;</code>
     * @return The bytes for rule.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRuleBytes() {
      java.lang.Object ref = rule_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        rule_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object message_ = "";
    /**
     * <pre>
     * Message represents the message displayed when validation fails. The message is required if the Rule contains
     * line breaks. The message must not contain line breaks.
     * If unset, the message is "failed rule: {Rule}".
     * e.g. "must be a URL with the host matching spec.host"
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return Whether the message field is set.
     */
    @java.lang.Override
    public boolean hasMessage() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Message represents the message displayed when validation fails. The message is required if the Rule contains
     * line breaks. The message must not contain line breaks.
     * If unset, the message is "failed rule: {Rule}".
     * e.g. "must be a URL with the host matching spec.host"
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The message.
     */
    @java.lang.Override
    public java.lang.String getMessage() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          message_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Message represents the message displayed when validation fails. The message is required if the Rule contains
     * line breaks. The message must not contain line breaks.
     * If unset, the message is "failed rule: {Rule}".
     * e.g. "must be a URL with the host matching spec.host"
     * </pre>
     *
     * <code>optional string message = 2;</code>
     * @return The bytes for message.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageBytes() {
      java.lang.Object ref = message_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        message_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGEEXPRESSION_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object messageExpression_ = "";
    /**
     * <pre>
     * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
     * Since messageExpression is used as a failure message, it must evaluate to a string.
     * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
     * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
     * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
     * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
     * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
     * messageExpression has access to all the same variables as the rule; the only difference is the return type.
     * Example:
     * "x must be less than max ("+string(self.max)+")"
     * +optional
     * </pre>
     *
     * <code>optional string messageExpression = 3;</code>
     * @return Whether the messageExpression field is set.
     */
    @java.lang.Override
    public boolean hasMessageExpression() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
     * Since messageExpression is used as a failure message, it must evaluate to a string.
     * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
     * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
     * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
     * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
     * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
     * messageExpression has access to all the same variables as the rule; the only difference is the return type.
     * Example:
     * "x must be less than max ("+string(self.max)+")"
     * +optional
     * </pre>
     *
     * <code>optional string messageExpression = 3;</code>
     * @return The messageExpression.
     */
    @java.lang.Override
    public java.lang.String getMessageExpression() {
      java.lang.Object ref = messageExpression_;
      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()) {
          messageExpression_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
     * Since messageExpression is used as a failure message, it must evaluate to a string.
     * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
     * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
     * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
     * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
     * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
     * messageExpression has access to all the same variables as the rule; the only difference is the return type.
     * Example:
     * "x must be less than max ("+string(self.max)+")"
     * +optional
     * </pre>
     *
     * <code>optional string messageExpression = 3;</code>
     * @return The bytes for messageExpression.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMessageExpressionBytes() {
      java.lang.Object ref = messageExpression_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        messageExpression_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REASON_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object reason_ = "";
    /**
     * <pre>
     * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
     * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
     * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
     * If not set, default to use "FieldValueInvalid".
     * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
     * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
     * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
     * If not set, default to use "FieldValueInvalid".
     * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The reason.
     */
    @java.lang.Override
    public java.lang.String getReason() {
      java.lang.Object ref = reason_;
      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()) {
          reason_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
     * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
     * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
     * If not set, default to use "FieldValueInvalid".
     * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
     * +optional
     * </pre>
     *
     * <code>optional string reason = 4;</code>
     * @return The bytes for reason.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReasonBytes() {
      java.lang.Object ref = reason_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        reason_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDPATH_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object fieldPath_ = "";
    /**
     * <pre>
     * fieldPath represents the field path returned when the validation fails.
     * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
     * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
     * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
     * It does not support list numeric index.
     * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
     * Numeric index of array is not supported.
     * For field name which contains special characters, use `['specialName']` to refer the field name.
     * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 5;</code>
     * @return Whether the fieldPath field is set.
     */
    @java.lang.Override
    public boolean hasFieldPath() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * fieldPath represents the field path returned when the validation fails.
     * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
     * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
     * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
     * It does not support list numeric index.
     * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
     * Numeric index of array is not supported.
     * For field name which contains special characters, use `['specialName']` to refer the field name.
     * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 5;</code>
     * @return The fieldPath.
     */
    @java.lang.Override
    public java.lang.String getFieldPath() {
      java.lang.Object ref = fieldPath_;
      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()) {
          fieldPath_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * fieldPath represents the field path returned when the validation fails.
     * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
     * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
     * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
     * It does not support list numeric index.
     * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
     * Numeric index of array is not supported.
     * For field name which contains special characters, use `['specialName']` to refer the field name.
     * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
     * +optional
     * </pre>
     *
     * <code>optional string fieldPath = 5;</code>
     * @return The bytes for fieldPath.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFieldPathBytes() {
      java.lang.Object ref = fieldPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fieldPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTIONALOLDSELF_FIELD_NUMBER = 6;
    private boolean optionalOldSelf_ = false;
    /**
     * <pre>
     * optionalOldSelf is used to opt a transition rule into evaluation
     * even when the object is first created, or if the old object is
     * missing the value.
     *
     * When enabled `oldSelf` will be a CEL optional whose value will be
     * `None` if there is no old value, or when the object is initially created.
     *
     * You may check for presence of oldSelf using `oldSelf.hasValue()` and
     * unwrap it after checking using `oldSelf.value()`. Check the CEL
     * documentation for Optional types for more information:
     * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
     *
     * May not be set unless `oldSelf` is used in `rule`.
     *
     * +featureGate=CRDValidationRatcheting
     * +optional
     * </pre>
     *
     * <code>optional bool optionalOldSelf = 6;</code>
     * @return Whether the optionalOldSelf field is set.
     */
    @java.lang.Override
    public boolean hasOptionalOldSelf() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * optionalOldSelf is used to opt a transition rule into evaluation
     * even when the object is first created, or if the old object is
     * missing the value.
     *
     * When enabled `oldSelf` will be a CEL optional whose value will be
     * `None` if there is no old value, or when the object is initially created.
     *
     * You may check for presence of oldSelf using `oldSelf.hasValue()` and
     * unwrap it after checking using `oldSelf.value()`. Check the CEL
     * documentation for Optional types for more information:
     * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
     *
     * May not be set unless `oldSelf` is used in `rule`.
     *
     * +featureGate=CRDValidationRatcheting
     * +optional
     * </pre>
     *
     * <code>optional bool optionalOldSelf = 6;</code>
     * @return The optionalOldSelf.
     */
    @java.lang.Override
    public boolean getOptionalOldSelf() {
      return optionalOldSelf_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, rule_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, message_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, messageExpression_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, fieldPath_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(6, optionalOldSelf_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, rule_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, message_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, messageExpression_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, reason_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, fieldPath_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, optionalOldSelf_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasRule() != other.hasRule()) return false;
      if (hasRule()) {
        if (!getRule()
            .equals(other.getRule())) return false;
      }
      if (hasMessage() != other.hasMessage()) return false;
      if (hasMessage()) {
        if (!getMessage()
            .equals(other.getMessage())) return false;
      }
      if (hasMessageExpression() != other.hasMessageExpression()) return false;
      if (hasMessageExpression()) {
        if (!getMessageExpression()
            .equals(other.getMessageExpression())) return false;
      }
      if (hasReason() != other.hasReason()) return false;
      if (hasReason()) {
        if (!getReason()
            .equals(other.getReason())) return false;
      }
      if (hasFieldPath() != other.hasFieldPath()) return false;
      if (hasFieldPath()) {
        if (!getFieldPath()
            .equals(other.getFieldPath())) return false;
      }
      if (hasOptionalOldSelf() != other.hasOptionalOldSelf()) return false;
      if (hasOptionalOldSelf()) {
        if (getOptionalOldSelf()
            != other.getOptionalOldSelf()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRule()) {
        hash = (37 * hash) + RULE_FIELD_NUMBER;
        hash = (53 * hash) + getRule().hashCode();
      }
      if (hasMessage()) {
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessage().hashCode();
      }
      if (hasMessageExpression()) {
        hash = (37 * hash) + MESSAGEEXPRESSION_FIELD_NUMBER;
        hash = (53 * hash) + getMessageExpression().hashCode();
      }
      if (hasReason()) {
        hash = (37 * hash) + REASON_FIELD_NUMBER;
        hash = (53 * hash) + getReason().hashCode();
      }
      if (hasFieldPath()) {
        hash = (37 * hash) + FIELDPATH_FIELD_NUMBER;
        hash = (53 * hash) + getFieldPath().hashCode();
      }
      if (hasOptionalOldSelf()) {
        hash = (37 * hash) + OPTIONALOLDSELF_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getOptionalOldSelf());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * ValidationRule describes a validation rule written in the CEL expression language.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule)
        io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRuleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.class, io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.Builder.class);
      }

      // Construct using io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        rule_ = "";
        message_ = "";
        messageExpression_ = "";
        reason_ = "";
        fieldPath_ = "";
        optionalOldSelf_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule result = new io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.rule_ = rule_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.message_ = message_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.messageExpression_ = messageExpression_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.reason_ = reason_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.fieldPath_ = fieldPath_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.optionalOldSelf_ = optionalOldSelf_;
          to_bitField0_ |= 0x00000020;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule.getDefaultInstance()) return this;
        if (other.hasRule()) {
          rule_ = other.rule_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasMessage()) {
          message_ = other.message_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasMessageExpression()) {
          messageExpression_ = other.messageExpression_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.hasReason()) {
          reason_ = other.reason_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasFieldPath()) {
          fieldPath_ = other.fieldPath_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.hasOptionalOldSelf()) {
          setOptionalOldSelf(other.getOptionalOldSelf());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                rule_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                message_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                messageExpression_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                reason_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                fieldPath_ = input.readBytes();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                optionalOldSelf_ = input.readBool();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object rule_ = "";
      /**
       * <pre>
       * Rule represents the expression which will be evaluated by CEL.
       * ref: https://github.com/google/cel-spec
       * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
       * The `self` variable in the CEL expression is bound to the scoped value.
       * Example:
       * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
       *
       * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
       * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
       * absent fields in CEL expressions.
       * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
       * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
       * are accessible via CEL macros and functions such as `self.all(...)`.
       * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
       * functions.
       * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
       * Examples:
       * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
       * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
       * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
       *
       * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
       * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
       *
       * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
       * expressions. This includes:
       * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
       * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
       * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
       * - An array where the items schema is of an "unknown type"
       * - An object where the additionalProperties schema is of an "unknown type"
       *
       * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
       * Accessible property names are escaped according to the following rules when accessed in the expression:
       * - '__' escapes to '__underscores__'
       * - '.' escapes to '__dot__'
       * - '-' escapes to '__dash__'
       * - '/' escapes to '__slash__'
       * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
       * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
       * "import", "let", "loop", "package", "namespace", "return".
       * Examples:
       * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
       * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
       * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
       *
       * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
       * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
       * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
       * non-intersecting elements in `Y` are appended, retaining their partial order.
       * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
       * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
       * non-intersecting keys are appended, retaining their partial order.
       *
       * If `rule` makes use of the `oldSelf` variable it is implicitly a
       * `transition rule`.
       *
       * By default, the `oldSelf` variable is the same type as `self`.
       * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
       * variable whose value() is the same type as `self`.
       * See the documentation for the `optionalOldSelf` field for details.
       *
       * Transition rules by default are applied only on UPDATE requests and are
       * skipped if an old value could not be found. You can opt a transition
       * rule into unconditional evaluation by setting `optionalOldSelf` to true.
       * </pre>
       *
       * <code>optional string rule = 1;</code>
       * @return Whether the rule field is set.
       */
      public boolean hasRule() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Rule represents the expression which will be evaluated by CEL.
       * ref: https://github.com/google/cel-spec
       * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
       * The `self` variable in the CEL expression is bound to the scoped value.
       * Example:
       * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
       *
       * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
       * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
       * absent fields in CEL expressions.
       * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
       * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
       * are accessible via CEL macros and functions such as `self.all(...)`.
       * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
       * functions.
       * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
       * Examples:
       * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
       * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
       * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
       *
       * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
       * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
       *
       * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
       * expressions. This includes:
       * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
       * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
       * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
       * - An array where the items schema is of an "unknown type"
       * - An object where the additionalProperties schema is of an "unknown type"
       *
       * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
       * Accessible property names are escaped according to the following rules when accessed in the expression:
       * - '__' escapes to '__underscores__'
       * - '.' escapes to '__dot__'
       * - '-' escapes to '__dash__'
       * - '/' escapes to '__slash__'
       * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
       * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
       * "import", "let", "loop", "package", "namespace", "return".
       * Examples:
       * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
       * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
       * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
       *
       * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
       * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
       * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
       * non-intersecting elements in `Y` are appended, retaining their partial order.
       * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
       * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
       * non-intersecting keys are appended, retaining their partial order.
       *
       * If `rule` makes use of the `oldSelf` variable it is implicitly a
       * `transition rule`.
       *
       * By default, the `oldSelf` variable is the same type as `self`.
       * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
       * variable whose value() is the same type as `self`.
       * See the documentation for the `optionalOldSelf` field for details.
       *
       * Transition rules by default are applied only on UPDATE requests and are
       * skipped if an old value could not be found. You can opt a transition
       * rule into unconditional evaluation by setting `optionalOldSelf` to true.
       * </pre>
       *
       * <code>optional string rule = 1;</code>
       * @return The rule.
       */
      public java.lang.String getRule() {
        java.lang.Object ref = rule_;
        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()) {
            rule_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Rule represents the expression which will be evaluated by CEL.
       * ref: https://github.com/google/cel-spec
       * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
       * The `self` variable in the CEL expression is bound to the scoped value.
       * Example:
       * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
       *
       * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
       * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
       * absent fields in CEL expressions.
       * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
       * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
       * are accessible via CEL macros and functions such as `self.all(...)`.
       * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
       * functions.
       * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
       * Examples:
       * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
       * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
       * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
       *
       * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
       * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
       *
       * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
       * expressions. This includes:
       * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
       * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
       * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
       * - An array where the items schema is of an "unknown type"
       * - An object where the additionalProperties schema is of an "unknown type"
       *
       * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
       * Accessible property names are escaped according to the following rules when accessed in the expression:
       * - '__' escapes to '__underscores__'
       * - '.' escapes to '__dot__'
       * - '-' escapes to '__dash__'
       * - '/' escapes to '__slash__'
       * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
       * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
       * "import", "let", "loop", "package", "namespace", "return".
       * Examples:
       * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
       * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
       * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
       *
       * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
       * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
       * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
       * non-intersecting elements in `Y` are appended, retaining their partial order.
       * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
       * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
       * non-intersecting keys are appended, retaining their partial order.
       *
       * If `rule` makes use of the `oldSelf` variable it is implicitly a
       * `transition rule`.
       *
       * By default, the `oldSelf` variable is the same type as `self`.
       * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
       * variable whose value() is the same type as `self`.
       * See the documentation for the `optionalOldSelf` field for details.
       *
       * Transition rules by default are applied only on UPDATE requests and are
       * skipped if an old value could not be found. You can opt a transition
       * rule into unconditional evaluation by setting `optionalOldSelf` to true.
       * </pre>
       *
       * <code>optional string rule = 1;</code>
       * @return The bytes for rule.
       */
      public com.google.protobuf.ByteString
          getRuleBytes() {
        java.lang.Object ref = rule_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          rule_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Rule represents the expression which will be evaluated by CEL.
       * ref: https://github.com/google/cel-spec
       * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
       * The `self` variable in the CEL expression is bound to the scoped value.
       * Example:
       * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
       *
       * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
       * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
       * absent fields in CEL expressions.
       * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
       * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
       * are accessible via CEL macros and functions such as `self.all(...)`.
       * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
       * functions.
       * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
       * Examples:
       * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
       * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
       * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
       *
       * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
       * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
       *
       * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
       * expressions. This includes:
       * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
       * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
       * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
       * - An array where the items schema is of an "unknown type"
       * - An object where the additionalProperties schema is of an "unknown type"
       *
       * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
       * Accessible property names are escaped according to the following rules when accessed in the expression:
       * - '__' escapes to '__underscores__'
       * - '.' escapes to '__dot__'
       * - '-' escapes to '__dash__'
       * - '/' escapes to '__slash__'
       * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
       * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
       * "import", "let", "loop", "package", "namespace", "return".
       * Examples:
       * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
       * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
       * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
       *
       * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
       * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
       * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
       * non-intersecting elements in `Y` are appended, retaining their partial order.
       * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
       * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
       * non-intersecting keys are appended, retaining their partial order.
       *
       * If `rule` makes use of the `oldSelf` variable it is implicitly a
       * `transition rule`.
       *
       * By default, the `oldSelf` variable is the same type as `self`.
       * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
       * variable whose value() is the same type as `self`.
       * See the documentation for the `optionalOldSelf` field for details.
       *
       * Transition rules by default are applied only on UPDATE requests and are
       * skipped if an old value could not be found. You can opt a transition
       * rule into unconditional evaluation by setting `optionalOldSelf` to true.
       * </pre>
       *
       * <code>optional string rule = 1;</code>
       * @param value The rule to set.
       * @return This builder for chaining.
       */
      public Builder setRule(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        rule_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule represents the expression which will be evaluated by CEL.
       * ref: https://github.com/google/cel-spec
       * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
       * The `self` variable in the CEL expression is bound to the scoped value.
       * Example:
       * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
       *
       * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
       * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
       * absent fields in CEL expressions.
       * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
       * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
       * are accessible via CEL macros and functions such as `self.all(...)`.
       * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
       * functions.
       * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
       * Examples:
       * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
       * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
       * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
       *
       * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
       * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
       *
       * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
       * expressions. This includes:
       * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
       * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
       * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
       * - An array where the items schema is of an "unknown type"
       * - An object where the additionalProperties schema is of an "unknown type"
       *
       * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
       * Accessible property names are escaped according to the following rules when accessed in the expression:
       * - '__' escapes to '__underscores__'
       * - '.' escapes to '__dot__'
       * - '-' escapes to '__dash__'
       * - '/' escapes to '__slash__'
       * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
       * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
       * "import", "let", "loop", "package", "namespace", "return".
       * Examples:
       * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
       * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
       * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
       *
       * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
       * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
       * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
       * non-intersecting elements in `Y` are appended, retaining their partial order.
       * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
       * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
       * non-intersecting keys are appended, retaining their partial order.
       *
       * If `rule` makes use of the `oldSelf` variable it is implicitly a
       * `transition rule`.
       *
       * By default, the `oldSelf` variable is the same type as `self`.
       * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
       * variable whose value() is the same type as `self`.
       * See the documentation for the `optionalOldSelf` field for details.
       *
       * Transition rules by default are applied only on UPDATE requests and are
       * skipped if an old value could not be found. You can opt a transition
       * rule into unconditional evaluation by setting `optionalOldSelf` to true.
       * </pre>
       *
       * <code>optional string rule = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRule() {
        rule_ = getDefaultInstance().getRule();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rule represents the expression which will be evaluated by CEL.
       * ref: https://github.com/google/cel-spec
       * The Rule is scoped to the location of the x-kubernetes-validations extension in the schema.
       * The `self` variable in the CEL expression is bound to the scoped value.
       * Example:
       * - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual &lt;= self.spec.maxDesired"}
       *
       * If the Rule is scoped to an object with properties, the accessible properties of the object are field selectable
       * via `self.field` and field presence can be checked via `has(self.field)`. Null valued fields are treated as
       * absent fields in CEL expressions.
       * If the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map
       * are accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map
       * are accessible via CEL macros and functions such as `self.all(...)`.
       * If the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and
       * functions.
       * If the Rule is scoped to a scalar, `self` is bound to the scalar value.
       * Examples:
       * - Rule scoped to a map of objects: {"rule": "self.components['Widget'].priority &lt; 10"}
       * - Rule scoped to a list of integers: {"rule": "self.values.all(value, value &gt;= 0 &amp;&amp; value &lt; 100)"}
       * - Rule scoped to a string value: {"rule": "self.startsWith('kube')"}
       *
       * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
       * object and from any x-kubernetes-embedded-resource annotated objects. No other metadata properties are accessible.
       *
       * Unknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL
       * expressions. This includes:
       * - Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.
       * - Object properties where the property schema is of an "unknown type". An "unknown type" is recursively defined as:
       * - A schema with no type and x-kubernetes-preserve-unknown-fields set to true
       * - An array where the items schema is of an "unknown type"
       * - An object where the additionalProperties schema is of an "unknown type"
       *
       * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
       * Accessible property names are escaped according to the following rules when accessed in the expression:
       * - '__' escapes to '__underscores__'
       * - '.' escapes to '__dot__'
       * - '-' escapes to '__dash__'
       * - '/' escapes to '__slash__'
       * - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:
       * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if",
       * "import", "let", "loop", "package", "namespace", "return".
       * Examples:
       * - Rule accessing a property named "namespace": {"rule": "self.__namespace__ &gt; 0"}
       * - Rule accessing a property named "x-prop": {"rule": "self.x__dash__prop &gt; 0"}
       * - Rule accessing a property named "redact__d": {"rule": "self.redact__underscores__d &gt; 0"}
       *
       * Equality on arrays with x-kubernetes-list-type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1].
       * Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type:
       * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and
       * non-intersecting elements in `Y` are appended, retaining their partial order.
       * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values
       * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with
       * non-intersecting keys are appended, retaining their partial order.
       *
       * If `rule` makes use of the `oldSelf` variable it is implicitly a
       * `transition rule`.
       *
       * By default, the `oldSelf` variable is the same type as `self`.
       * When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional
       * variable whose value() is the same type as `self`.
       * See the documentation for the `optionalOldSelf` field for details.
       *
       * Transition rules by default are applied only on UPDATE requests and are
       * skipped if an old value could not be found. You can opt a transition
       * rule into unconditional evaluation by setting `optionalOldSelf` to true.
       * </pre>
       *
       * <code>optional string rule = 1;</code>
       * @param value The bytes for rule to set.
       * @return This builder for chaining.
       */
      public Builder setRuleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        rule_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * <pre>
       * Message represents the message displayed when validation fails. The message is required if the Rule contains
       * line breaks. The message must not contain line breaks.
       * If unset, the message is "failed rule: {Rule}".
       * e.g. "must be a URL with the host matching spec.host"
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @return Whether the message field is set.
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Message represents the message displayed when validation fails. The message is required if the Rule contains
       * line breaks. The message must not contain line breaks.
       * If unset, the message is "failed rule: {Rule}".
       * e.g. "must be a URL with the host matching spec.host"
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @return The message.
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            message_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Message represents the message displayed when validation fails. The message is required if the Rule contains
       * line breaks. The message must not contain line breaks.
       * If unset, the message is "failed rule: {Rule}".
       * e.g. "must be a URL with the host matching spec.host"
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @return The bytes for message.
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Message represents the message displayed when validation fails. The message is required if the Rule contains
       * line breaks. The message must not contain line breaks.
       * If unset, the message is "failed rule: {Rule}".
       * e.g. "must be a URL with the host matching spec.host"
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Message represents the message displayed when validation fails. The message is required if the Rule contains
       * line breaks. The message must not contain line breaks.
       * If unset, the message is "failed rule: {Rule}".
       * e.g. "must be a URL with the host matching spec.host"
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        message_ = getDefaultInstance().getMessage();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Message represents the message displayed when validation fails. The message is required if the Rule contains
       * line breaks. The message must not contain line breaks.
       * If unset, the message is "failed rule: {Rule}".
       * e.g. "must be a URL with the host matching spec.host"
       * </pre>
       *
       * <code>optional string message = 2;</code>
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        message_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object messageExpression_ = "";
      /**
       * <pre>
       * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
       * Since messageExpression is used as a failure message, it must evaluate to a string.
       * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
       * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
       * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
       * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
       * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
       * messageExpression has access to all the same variables as the rule; the only difference is the return type.
       * Example:
       * "x must be less than max ("+string(self.max)+")"
       * +optional
       * </pre>
       *
       * <code>optional string messageExpression = 3;</code>
       * @return Whether the messageExpression field is set.
       */
      public boolean hasMessageExpression() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
       * Since messageExpression is used as a failure message, it must evaluate to a string.
       * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
       * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
       * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
       * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
       * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
       * messageExpression has access to all the same variables as the rule; the only difference is the return type.
       * Example:
       * "x must be less than max ("+string(self.max)+")"
       * +optional
       * </pre>
       *
       * <code>optional string messageExpression = 3;</code>
       * @return The messageExpression.
       */
      public java.lang.String getMessageExpression() {
        java.lang.Object ref = messageExpression_;
        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()) {
            messageExpression_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
       * Since messageExpression is used as a failure message, it must evaluate to a string.
       * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
       * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
       * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
       * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
       * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
       * messageExpression has access to all the same variables as the rule; the only difference is the return type.
       * Example:
       * "x must be less than max ("+string(self.max)+")"
       * +optional
       * </pre>
       *
       * <code>optional string messageExpression = 3;</code>
       * @return The bytes for messageExpression.
       */
      public com.google.protobuf.ByteString
          getMessageExpressionBytes() {
        java.lang.Object ref = messageExpression_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          messageExpression_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
       * Since messageExpression is used as a failure message, it must evaluate to a string.
       * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
       * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
       * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
       * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
       * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
       * messageExpression has access to all the same variables as the rule; the only difference is the return type.
       * Example:
       * "x must be less than max ("+string(self.max)+")"
       * +optional
       * </pre>
       *
       * <code>optional string messageExpression = 3;</code>
       * @param value The messageExpression to set.
       * @return This builder for chaining.
       */
      public Builder setMessageExpression(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        messageExpression_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
       * Since messageExpression is used as a failure message, it must evaluate to a string.
       * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
       * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
       * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
       * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
       * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
       * messageExpression has access to all the same variables as the rule; the only difference is the return type.
       * Example:
       * "x must be less than max ("+string(self.max)+")"
       * +optional
       * </pre>
       *
       * <code>optional string messageExpression = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMessageExpression() {
        messageExpression_ = getDefaultInstance().getMessageExpression();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.
       * Since messageExpression is used as a failure message, it must evaluate to a string.
       * If both message and messageExpression are present on a rule, then messageExpression will be used if validation
       * fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced
       * as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string
       * that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and
       * the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged.
       * messageExpression has access to all the same variables as the rule; the only difference is the return type.
       * Example:
       * "x must be less than max ("+string(self.max)+")"
       * +optional
       * </pre>
       *
       * <code>optional string messageExpression = 3;</code>
       * @param value The bytes for messageExpression to set.
       * @return This builder for chaining.
       */
      public Builder setMessageExpressionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        messageExpression_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object reason_ = "";
      /**
       * <pre>
       * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
       * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
       * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
       * If not set, default to use "FieldValueInvalid".
       * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return Whether the reason field is set.
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
       * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
       * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
       * If not set, default to use "FieldValueInvalid".
       * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return The reason.
       */
      public java.lang.String getReason() {
        java.lang.Object ref = reason_;
        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()) {
            reason_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
       * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
       * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
       * If not set, default to use "FieldValueInvalid".
       * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return The bytes for reason.
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        java.lang.Object ref = reason_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
       * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
       * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
       * If not set, default to use "FieldValueInvalid".
       * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @param value The reason to set.
       * @return This builder for chaining.
       */
      public Builder setReason(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        reason_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
       * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
       * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
       * If not set, default to use "FieldValueInvalid".
       * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        reason_ = getDefaultInstance().getReason();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.
       * The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule.
       * The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate".
       * If not set, default to use "FieldValueInvalid".
       * All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.
       * +optional
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       * @param value The bytes for reason to set.
       * @return This builder for chaining.
       */
      public Builder setReasonBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        reason_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object fieldPath_ = "";
      /**
       * <pre>
       * fieldPath represents the field path returned when the validation fails.
       * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
       * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
       * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
       * It does not support list numeric index.
       * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
       * Numeric index of array is not supported.
       * For field name which contains special characters, use `['specialName']` to refer the field name.
       * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 5;</code>
       * @return Whether the fieldPath field is set.
       */
      public boolean hasFieldPath() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * fieldPath represents the field path returned when the validation fails.
       * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
       * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
       * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
       * It does not support list numeric index.
       * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
       * Numeric index of array is not supported.
       * For field name which contains special characters, use `['specialName']` to refer the field name.
       * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 5;</code>
       * @return The fieldPath.
       */
      public java.lang.String getFieldPath() {
        java.lang.Object ref = fieldPath_;
        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()) {
            fieldPath_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * fieldPath represents the field path returned when the validation fails.
       * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
       * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
       * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
       * It does not support list numeric index.
       * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
       * Numeric index of array is not supported.
       * For field name which contains special characters, use `['specialName']` to refer the field name.
       * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 5;</code>
       * @return The bytes for fieldPath.
       */
      public com.google.protobuf.ByteString
          getFieldPathBytes() {
        java.lang.Object ref = fieldPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fieldPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * fieldPath represents the field path returned when the validation fails.
       * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
       * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
       * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
       * It does not support list numeric index.
       * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
       * Numeric index of array is not supported.
       * For field name which contains special characters, use `['specialName']` to refer the field name.
       * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 5;</code>
       * @param value The fieldPath to set.
       * @return This builder for chaining.
       */
      public Builder setFieldPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fieldPath_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fieldPath represents the field path returned when the validation fails.
       * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
       * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
       * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
       * It does not support list numeric index.
       * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
       * Numeric index of array is not supported.
       * For field name which contains special characters, use `['specialName']` to refer the field name.
       * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearFieldPath() {
        fieldPath_ = getDefaultInstance().getFieldPath();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * fieldPath represents the field path returned when the validation fails.
       * It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.
       * e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`
       * If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`
       * It does not support list numeric index.
       * It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.
       * Numeric index of array is not supported.
       * For field name which contains special characters, use `['specialName']` to refer the field name.
       * e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`
       * +optional
       * </pre>
       *
       * <code>optional string fieldPath = 5;</code>
       * @param value The bytes for fieldPath to set.
       * @return This builder for chaining.
       */
      public Builder setFieldPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fieldPath_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private boolean optionalOldSelf_ ;
      /**
       * <pre>
       * optionalOldSelf is used to opt a transition rule into evaluation
       * even when the object is first created, or if the old object is
       * missing the value.
       *
       * When enabled `oldSelf` will be a CEL optional whose value will be
       * `None` if there is no old value, or when the object is initially created.
       *
       * You may check for presence of oldSelf using `oldSelf.hasValue()` and
       * unwrap it after checking using `oldSelf.value()`. Check the CEL
       * documentation for Optional types for more information:
       * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
       *
       * May not be set unless `oldSelf` is used in `rule`.
       *
       * +featureGate=CRDValidationRatcheting
       * +optional
       * </pre>
       *
       * <code>optional bool optionalOldSelf = 6;</code>
       * @return Whether the optionalOldSelf field is set.
       */
      @java.lang.Override
      public boolean hasOptionalOldSelf() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * optionalOldSelf is used to opt a transition rule into evaluation
       * even when the object is first created, or if the old object is
       * missing the value.
       *
       * When enabled `oldSelf` will be a CEL optional whose value will be
       * `None` if there is no old value, or when the object is initially created.
       *
       * You may check for presence of oldSelf using `oldSelf.hasValue()` and
       * unwrap it after checking using `oldSelf.value()`. Check the CEL
       * documentation for Optional types for more information:
       * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
       *
       * May not be set unless `oldSelf` is used in `rule`.
       *
       * +featureGate=CRDValidationRatcheting
       * +optional
       * </pre>
       *
       * <code>optional bool optionalOldSelf = 6;</code>
       * @return The optionalOldSelf.
       */
      @java.lang.Override
      public boolean getOptionalOldSelf() {
        return optionalOldSelf_;
      }
      /**
       * <pre>
       * optionalOldSelf is used to opt a transition rule into evaluation
       * even when the object is first created, or if the old object is
       * missing the value.
       *
       * When enabled `oldSelf` will be a CEL optional whose value will be
       * `None` if there is no old value, or when the object is initially created.
       *
       * You may check for presence of oldSelf using `oldSelf.hasValue()` and
       * unwrap it after checking using `oldSelf.value()`. Check the CEL
       * documentation for Optional types for more information:
       * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
       *
       * May not be set unless `oldSelf` is used in `rule`.
       *
       * +featureGate=CRDValidationRatcheting
       * +optional
       * </pre>
       *
       * <code>optional bool optionalOldSelf = 6;</code>
       * @param value The optionalOldSelf to set.
       * @return This builder for chaining.
       */
      public Builder setOptionalOldSelf(boolean value) {

        optionalOldSelf_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * optionalOldSelf is used to opt a transition rule into evaluation
       * even when the object is first created, or if the old object is
       * missing the value.
       *
       * When enabled `oldSelf` will be a CEL optional whose value will be
       * `None` if there is no old value, or when the object is initially created.
       *
       * You may check for presence of oldSelf using `oldSelf.hasValue()` and
       * unwrap it after checking using `oldSelf.value()`. Check the CEL
       * documentation for Optional types for more information:
       * https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
       *
       * May not be set unless `oldSelf` is used in `rule`.
       *
       * +featureGate=CRDValidationRatcheting
       * +optional
       * </pre>
       *
       * <code>optional bool optionalOldSelf = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptionalOldSelf() {
        bitField0_ = (bitField0_ & ~0x00000020);
        optionalOldSelf_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ValidationRule)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ValidationRule getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WebhookClientConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * url gives the location of the webhook, in standard URL form
     * (`scheme://host:port/path`). Exactly one of `url` or `service`
     * must be specified.
     *
     * The `host` should not refer to a service running in the cluster; use
     * the `service` field instead. The host might be resolved via external
     * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
     * in-cluster DNS as that would be a layering violation). `host` may
     * also be an IP address.
     *
     * Please note that using `localhost` or `127.0.0.1` as a `host` is
     * risky unless you take great care to run this webhook on all hosts
     * which run an apiserver which might need to make calls to this
     * webhook. Such installs are likely to be non-portable, i.e., not easy
     * to turn up in a new cluster.
     *
     * The scheme must be "https"; the URL must begin with "https://".
     *
     * A path is optional, and if present may be any string permissible in
     * a URL. You may use the path to pass an arbitrary string to the
     * webhook, for example, a cluster identifier.
     *
     * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
     * allowed. Fragments ("#...") and query parameters ("?...") are not
     * allowed, either.
     *
     * +optional
     * </pre>
     *
     * <code>optional string url = 3;</code>
     * @return Whether the url field is set.
     */
    boolean hasUrl();
    /**
     * <pre>
     * url gives the location of the webhook, in standard URL form
     * (`scheme://host:port/path`). Exactly one of `url` or `service`
     * must be specified.
     *
     * The `host` should not refer to a service running in the cluster; use
     * the `service` field instead. The host might be resolved via external
     * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
     * in-cluster DNS as that would be a layering violation). `host` may
     * also be an IP address.
     *
     * Please note that using `localhost` or `127.0.0.1` as a `host` is
     * risky unless you take great care to run this webhook on all hosts
     * which run an apiserver which might need to make calls to this
     * webhook. Such installs are likely to be non-portable, i.e., not easy
     * to turn up in a new cluster.
     *
     * The scheme must be "https"; the URL must begin with "https://".
     *
     * A path is optional, and if present may be any string permissible in
     * a URL. You may use the path to pass an arbitrary string to the
     * webhook, for example, a cluster identifier.
     *
     * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
     * allowed. Fragments ("#...") and query parameters ("?...") are not
     * allowed, either.
     *
     * +optional
     * </pre>
     *
     * <code>optional string url = 3;</code>
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     * <pre>
     * url gives the location of the webhook, in standard URL form
     * (`scheme://host:port/path`). Exactly one of `url` or `service`
     * must be specified.
     *
     * The `host` should not refer to a service running in the cluster; use
     * the `service` field instead. The host might be resolved via external
     * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
     * in-cluster DNS as that would be a layering violation). `host` may
     * also be an IP address.
     *
     * Please note that using `localhost` or `127.0.0.1` as a `host` is
     * risky unless you take great care to run this webhook on all hosts
     * which run an apiserver which might need to make calls to this
     * webhook. Such installs are likely to be non-portable, i.e., not easy
     * to turn up in a new cluster.
     *
     * The scheme must be "https"; the URL must begin with "https://".
     *
     * A path is optional, and if present may be any string permissible in
     * a URL. You may use the path to pass an arbitrary string to the
     * webhook, for example, a cluster identifier.
     *
     * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
     * allowed. Fragments ("#...") and query parameters ("?...") are not
     * allowed, either.
     *
     * +optional
     * </pre>
     *
     * <code>optional string url = 3;</code>
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString
        getUrlBytes();

    /**
     * <pre>
     * service is a reference to the service for this webhook. Either
     * service or url must be specified.
     *
     * If the webhook is running within the cluster, then you should use `service`.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
     * @return Whether the service field is set.
     */
    boolean hasService();
    /**
     * <pre>
     * service is a reference to the service for this webhook. Either
     * service or url must be specified.
     *
     * If the webhook is running within the cluster, then you should use `service`.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
     * @return The service.
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference getService();
    /**
     * <pre>
     * service is a reference to the service for this webhook. Either
     * service or url must be specified.
     *
     * If the webhook is running within the cluster, then you should use `service`.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
     */
    io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReferenceOrBuilder getServiceOrBuilder();

    /**
     * <pre>
     * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
     * If unspecified, system trust roots on the apiserver are used.
     * +optional
     * </pre>
     *
     * <code>optional bytes caBundle = 2;</code>
     * @return Whether the caBundle field is set.
     */
    boolean hasCaBundle();
    /**
     * <pre>
     * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
     * If unspecified, system trust roots on the apiserver are used.
     * +optional
     * </pre>
     *
     * <code>optional bytes caBundle = 2;</code>
     * @return The caBundle.
     */
    com.google.protobuf.ByteString getCaBundle();
  }
  /**
   * <pre>
   * WebhookClientConfig contains the information to make a TLS connection with the webhook.
   * </pre>
   *
   * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig}
   */
  public static final class WebhookClientConfig extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig)
      WebhookClientConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 26,
        /* patch= */ 1,
        /* suffix= */ "",
        WebhookClientConfig.class.getName());
    }
    // Use WebhookClientConfig.newBuilder() to construct.
    private WebhookClientConfig(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
    }
    private WebhookClientConfig() {
      url_ = "";
      caBundle_ = com.google.protobuf.ByteString.EMPTY;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.class, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.Builder.class);
    }

    private int bitField0_;
    public static final int URL_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object url_ = "";
    /**
     * <pre>
     * url gives the location of the webhook, in standard URL form
     * (`scheme://host:port/path`). Exactly one of `url` or `service`
     * must be specified.
     *
     * The `host` should not refer to a service running in the cluster; use
     * the `service` field instead. The host might be resolved via external
     * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
     * in-cluster DNS as that would be a layering violation). `host` may
     * also be an IP address.
     *
     * Please note that using `localhost` or `127.0.0.1` as a `host` is
     * risky unless you take great care to run this webhook on all hosts
     * which run an apiserver which might need to make calls to this
     * webhook. Such installs are likely to be non-portable, i.e., not easy
     * to turn up in a new cluster.
     *
     * The scheme must be "https"; the URL must begin with "https://".
     *
     * A path is optional, and if present may be any string permissible in
     * a URL. You may use the path to pass an arbitrary string to the
     * webhook, for example, a cluster identifier.
     *
     * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
     * allowed. Fragments ("#...") and query parameters ("?...") are not
     * allowed, either.
     *
     * +optional
     * </pre>
     *
     * <code>optional string url = 3;</code>
     * @return Whether the url field is set.
     */
    @java.lang.Override
    public boolean hasUrl() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * url gives the location of the webhook, in standard URL form
     * (`scheme://host:port/path`). Exactly one of `url` or `service`
     * must be specified.
     *
     * The `host` should not refer to a service running in the cluster; use
     * the `service` field instead. The host might be resolved via external
     * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
     * in-cluster DNS as that would be a layering violation). `host` may
     * also be an IP address.
     *
     * Please note that using `localhost` or `127.0.0.1` as a `host` is
     * risky unless you take great care to run this webhook on all hosts
     * which run an apiserver which might need to make calls to this
     * webhook. Such installs are likely to be non-portable, i.e., not easy
     * to turn up in a new cluster.
     *
     * The scheme must be "https"; the URL must begin with "https://".
     *
     * A path is optional, and if present may be any string permissible in
     * a URL. You may use the path to pass an arbitrary string to the
     * webhook, for example, a cluster identifier.
     *
     * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
     * allowed. Fragments ("#...") and query parameters ("?...") are not
     * allowed, either.
     *
     * +optional
     * </pre>
     *
     * <code>optional string url = 3;</code>
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      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()) {
          url_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * url gives the location of the webhook, in standard URL form
     * (`scheme://host:port/path`). Exactly one of `url` or `service`
     * must be specified.
     *
     * The `host` should not refer to a service running in the cluster; use
     * the `service` field instead. The host might be resolved via external
     * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
     * in-cluster DNS as that would be a layering violation). `host` may
     * also be an IP address.
     *
     * Please note that using `localhost` or `127.0.0.1` as a `host` is
     * risky unless you take great care to run this webhook on all hosts
     * which run an apiserver which might need to make calls to this
     * webhook. Such installs are likely to be non-portable, i.e., not easy
     * to turn up in a new cluster.
     *
     * The scheme must be "https"; the URL must begin with "https://".
     *
     * A path is optional, and if present may be any string permissible in
     * a URL. You may use the path to pass an arbitrary string to the
     * webhook, for example, a cluster identifier.
     *
     * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
     * allowed. Fragments ("#...") and query parameters ("?...") are not
     * allowed, either.
     *
     * +optional
     * </pre>
     *
     * <code>optional string url = 3;</code>
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERVICE_FIELD_NUMBER = 1;
    private io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference service_;
    /**
     * <pre>
     * service is a reference to the service for this webhook. Either
     * service or url must be specified.
     *
     * If the webhook is running within the cluster, then you should use `service`.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
     * @return Whether the service field is set.
     */
    @java.lang.Override
    public boolean hasService() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * service is a reference to the service for this webhook. Either
     * service or url must be specified.
     *
     * If the webhook is running within the cluster, then you should use `service`.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
     * @return The service.
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference getService() {
      return service_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.getDefaultInstance() : service_;
    }
    /**
     * <pre>
     * service is a reference to the service for this webhook. Either
     * service or url must be specified.
     *
     * If the webhook is running within the cluster, then you should use `service`.
     *
     * +optional
     * </pre>
     *
     * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
     */
    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReferenceOrBuilder getServiceOrBuilder() {
      return service_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.getDefaultInstance() : service_;
    }

    public static final int CABUNDLE_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString caBundle_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
     * If unspecified, system trust roots on the apiserver are used.
     * +optional
     * </pre>
     *
     * <code>optional bytes caBundle = 2;</code>
     * @return Whether the caBundle field is set.
     */
    @java.lang.Override
    public boolean hasCaBundle() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
     * If unspecified, system trust roots on the apiserver are used.
     * +optional
     * </pre>
     *
     * <code>optional bytes caBundle = 2;</code>
     * @return The caBundle.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getCaBundle() {
      return caBundle_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(1, getService());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBytes(2, caBundle_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, url_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getService());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, caBundle_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, url_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (hasUrl() != other.hasUrl()) return false;
      if (hasUrl()) {
        if (!getUrl()
            .equals(other.getUrl())) return false;
      }
      if (hasService() != other.hasService()) return false;
      if (hasService()) {
        if (!getService()
            .equals(other.getService())) return false;
      }
      if (hasCaBundle() != other.hasCaBundle()) return false;
      if (hasCaBundle()) {
        if (!getCaBundle()
            .equals(other.getCaBundle())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUrl()) {
        hash = (37 * hash) + URL_FIELD_NUMBER;
        hash = (53 * hash) + getUrl().hashCode();
      }
      if (hasService()) {
        hash = (37 * hash) + SERVICE_FIELD_NUMBER;
        hash = (53 * hash) + getService().hashCode();
      }
      if (hasCaBundle()) {
        hash = (37 * hash) + CABUNDLE_FIELD_NUMBER;
        hash = (53 * hash) + getCaBundle().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * WebhookClientConfig contains the information to make a TLS connection with the webhook.
     * </pre>
     *
     * Protobuf type {@code k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig)
        io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.class, io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.Builder.class);
      }

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

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getServiceFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        url_ = "";
        service_ = null;
        if (serviceBuilder_ != null) {
          serviceBuilder_.dispose();
          serviceBuilder_ = null;
        }
        caBundle_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_descriptor;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig getDefaultInstanceForType() {
        return io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.getDefaultInstance();
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig build() {
        io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig buildPartial() {
        io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig result = new io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.url_ = url_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.service_ = serviceBuilder_ == null
              ? service_
              : serviceBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.caBundle_ = caBundle_;
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig) {
          return mergeFrom((io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig other) {
        if (other == io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig.getDefaultInstance()) return this;
        if (other.hasUrl()) {
          url_ = other.url_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasService()) {
          mergeService(other.getService());
        }
        if (other.hasCaBundle()) {
          setCaBundle(other.getCaBundle());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object url_ = "";
      /**
       * <pre>
       * url gives the location of the webhook, in standard URL form
       * (`scheme://host:port/path`). Exactly one of `url` or `service`
       * must be specified.
       *
       * The `host` should not refer to a service running in the cluster; use
       * the `service` field instead. The host might be resolved via external
       * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
       * in-cluster DNS as that would be a layering violation). `host` may
       * also be an IP address.
       *
       * Please note that using `localhost` or `127.0.0.1` as a `host` is
       * risky unless you take great care to run this webhook on all hosts
       * which run an apiserver which might need to make calls to this
       * webhook. Such installs are likely to be non-portable, i.e., not easy
       * to turn up in a new cluster.
       *
       * The scheme must be "https"; the URL must begin with "https://".
       *
       * A path is optional, and if present may be any string permissible in
       * a URL. You may use the path to pass an arbitrary string to the
       * webhook, for example, a cluster identifier.
       *
       * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
       * allowed. Fragments ("#...") and query parameters ("?...") are not
       * allowed, either.
       *
       * +optional
       * </pre>
       *
       * <code>optional string url = 3;</code>
       * @return Whether the url field is set.
       */
      public boolean hasUrl() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * url gives the location of the webhook, in standard URL form
       * (`scheme://host:port/path`). Exactly one of `url` or `service`
       * must be specified.
       *
       * The `host` should not refer to a service running in the cluster; use
       * the `service` field instead. The host might be resolved via external
       * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
       * in-cluster DNS as that would be a layering violation). `host` may
       * also be an IP address.
       *
       * Please note that using `localhost` or `127.0.0.1` as a `host` is
       * risky unless you take great care to run this webhook on all hosts
       * which run an apiserver which might need to make calls to this
       * webhook. Such installs are likely to be non-portable, i.e., not easy
       * to turn up in a new cluster.
       *
       * The scheme must be "https"; the URL must begin with "https://".
       *
       * A path is optional, and if present may be any string permissible in
       * a URL. You may use the path to pass an arbitrary string to the
       * webhook, for example, a cluster identifier.
       *
       * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
       * allowed. Fragments ("#...") and query parameters ("?...") are not
       * allowed, either.
       *
       * +optional
       * </pre>
       *
       * <code>optional string url = 3;</code>
       * @return The url.
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        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()) {
            url_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * url gives the location of the webhook, in standard URL form
       * (`scheme://host:port/path`). Exactly one of `url` or `service`
       * must be specified.
       *
       * The `host` should not refer to a service running in the cluster; use
       * the `service` field instead. The host might be resolved via external
       * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
       * in-cluster DNS as that would be a layering violation). `host` may
       * also be an IP address.
       *
       * Please note that using `localhost` or `127.0.0.1` as a `host` is
       * risky unless you take great care to run this webhook on all hosts
       * which run an apiserver which might need to make calls to this
       * webhook. Such installs are likely to be non-portable, i.e., not easy
       * to turn up in a new cluster.
       *
       * The scheme must be "https"; the URL must begin with "https://".
       *
       * A path is optional, and if present may be any string permissible in
       * a URL. You may use the path to pass an arbitrary string to the
       * webhook, for example, a cluster identifier.
       *
       * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
       * allowed. Fragments ("#...") and query parameters ("?...") are not
       * allowed, either.
       *
       * +optional
       * </pre>
       *
       * <code>optional string url = 3;</code>
       * @return The bytes for url.
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * url gives the location of the webhook, in standard URL form
       * (`scheme://host:port/path`). Exactly one of `url` or `service`
       * must be specified.
       *
       * The `host` should not refer to a service running in the cluster; use
       * the `service` field instead. The host might be resolved via external
       * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
       * in-cluster DNS as that would be a layering violation). `host` may
       * also be an IP address.
       *
       * Please note that using `localhost` or `127.0.0.1` as a `host` is
       * risky unless you take great care to run this webhook on all hosts
       * which run an apiserver which might need to make calls to this
       * webhook. Such installs are likely to be non-portable, i.e., not easy
       * to turn up in a new cluster.
       *
       * The scheme must be "https"; the URL must begin with "https://".
       *
       * A path is optional, and if present may be any string permissible in
       * a URL. You may use the path to pass an arbitrary string to the
       * webhook, for example, a cluster identifier.
       *
       * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
       * allowed. Fragments ("#...") and query parameters ("?...") are not
       * allowed, either.
       *
       * +optional
       * </pre>
       *
       * <code>optional string url = 3;</code>
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        url_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * url gives the location of the webhook, in standard URL form
       * (`scheme://host:port/path`). Exactly one of `url` or `service`
       * must be specified.
       *
       * The `host` should not refer to a service running in the cluster; use
       * the `service` field instead. The host might be resolved via external
       * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
       * in-cluster DNS as that would be a layering violation). `host` may
       * also be an IP address.
       *
       * Please note that using `localhost` or `127.0.0.1` as a `host` is
       * risky unless you take great care to run this webhook on all hosts
       * which run an apiserver which might need to make calls to this
       * webhook. Such installs are likely to be non-portable, i.e., not easy
       * to turn up in a new cluster.
       *
       * The scheme must be "https"; the URL must begin with "https://".
       *
       * A path is optional, and if present may be any string permissible in
       * a URL. You may use the path to pass an arbitrary string to the
       * webhook, for example, a cluster identifier.
       *
       * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
       * allowed. Fragments ("#...") and query parameters ("?...") are not
       * allowed, either.
       *
       * +optional
       * </pre>
       *
       * <code>optional string url = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        url_ = getDefaultInstance().getUrl();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * url gives the location of the webhook, in standard URL form
       * (`scheme://host:port/path`). Exactly one of `url` or `service`
       * must be specified.
       *
       * The `host` should not refer to a service running in the cluster; use
       * the `service` field instead. The host might be resolved via external
       * DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
       * in-cluster DNS as that would be a layering violation). `host` may
       * also be an IP address.
       *
       * Please note that using `localhost` or `127.0.0.1` as a `host` is
       * risky unless you take great care to run this webhook on all hosts
       * which run an apiserver which might need to make calls to this
       * webhook. Such installs are likely to be non-portable, i.e., not easy
       * to turn up in a new cluster.
       *
       * The scheme must be "https"; the URL must begin with "https://".
       *
       * A path is optional, and if present may be any string permissible in
       * a URL. You may use the path to pass an arbitrary string to the
       * webhook, for example, a cluster identifier.
       *
       * Attempting to use a user or basic auth e.g. "user:password&#64;" is not
       * allowed. Fragments ("#...") and query parameters ("?...") are not
       * allowed, either.
       *
       * +optional
       * </pre>
       *
       * <code>optional string url = 3;</code>
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        url_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference service_;
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReferenceOrBuilder> serviceBuilder_;
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       * @return Whether the service field is set.
       */
      public boolean hasService() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       * @return The service.
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference getService() {
        if (serviceBuilder_ == null) {
          return service_ == null ? io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.getDefaultInstance() : service_;
        } else {
          return serviceBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       */
      public Builder setService(io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference value) {
        if (serviceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          service_ = value;
        } else {
          serviceBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       */
      public Builder setService(
          io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.Builder builderForValue) {
        if (serviceBuilder_ == null) {
          service_ = builderForValue.build();
        } else {
          serviceBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       */
      public Builder mergeService(io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference value) {
        if (serviceBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            service_ != null &&
            service_ != io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.getDefaultInstance()) {
            getServiceBuilder().mergeFrom(value);
          } else {
            service_ = value;
          }
        } else {
          serviceBuilder_.mergeFrom(value);
        }
        if (service_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       */
      public Builder clearService() {
        bitField0_ = (bitField0_ & ~0x00000002);
        service_ = null;
        if (serviceBuilder_ != null) {
          serviceBuilder_.dispose();
          serviceBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.Builder getServiceBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getServiceFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       */
      public io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReferenceOrBuilder getServiceOrBuilder() {
        if (serviceBuilder_ != null) {
          return serviceBuilder_.getMessageOrBuilder();
        } else {
          return service_ == null ?
              io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.getDefaultInstance() : service_;
        }
      }
      /**
       * <pre>
       * service is a reference to the service for this webhook. Either
       * service or url must be specified.
       *
       * If the webhook is running within the cluster, then you should use `service`.
       *
       * +optional
       * </pre>
       *
       * <code>optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.ServiceReference service = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReferenceOrBuilder> 
          getServiceFieldBuilder() {
        if (serviceBuilder_ == null) {
          serviceBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReference.Builder, io.kubernetes.client.proto.V1beta1Apiextensions.ServiceReferenceOrBuilder>(
                  getService(),
                  getParentForChildren(),
                  isClean());
          service_ = null;
        }
        return serviceBuilder_;
      }

      private com.google.protobuf.ByteString caBundle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
       * If unspecified, system trust roots on the apiserver are used.
       * +optional
       * </pre>
       *
       * <code>optional bytes caBundle = 2;</code>
       * @return Whether the caBundle field is set.
       */
      @java.lang.Override
      public boolean hasCaBundle() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
       * If unspecified, system trust roots on the apiserver are used.
       * +optional
       * </pre>
       *
       * <code>optional bytes caBundle = 2;</code>
       * @return The caBundle.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getCaBundle() {
        return caBundle_;
      }
      /**
       * <pre>
       * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
       * If unspecified, system trust roots on the apiserver are used.
       * +optional
       * </pre>
       *
       * <code>optional bytes caBundle = 2;</code>
       * @param value The caBundle to set.
       * @return This builder for chaining.
       */
      public Builder setCaBundle(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        caBundle_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
       * If unspecified, system trust roots on the apiserver are used.
       * +optional
       * </pre>
       *
       * <code>optional bytes caBundle = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCaBundle() {
        bitField0_ = (bitField0_ & ~0x00000004);
        caBundle_ = getDefaultInstance().getCaBundle();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig)
    }

    // @@protoc_insertion_point(class_scope:k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1.WebhookClientConfig)
    private static final io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig();
    }

    public static io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public io.kubernetes.client.proto.V1beta1Apiextensions.WebhookClientConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PropertiesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PropertiesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PatternPropertiesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PatternPropertiesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DependenciesEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DependenciesEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DefinitionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DefinitionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\nMk8s.io/apiextensions-apiserver/pkg/api" +
      "s/apiextensions/v1beta1/generated.proto\022" +
      "=k8s.io.apiextensions_apiserver.pkg.apis" +
      ".apiextensions.v1beta1\0324k8s.io/apimachin" +
      "ery/pkg/apis/meta/v1/generated.proto\032/k8" +
      "s.io/apimachinery/pkg/runtime/generated." +
      "proto\0326k8s.io/apimachinery/pkg/runtime/s" +
      "chema/generated.proto\"{\n\021ConversionReque" +
      "st\022\013\n\003uid\030\001 \001(\t\022\031\n\021desiredAPIVersion\030\002 \001" +
      "(\t\022>\n\007objects\030\003 \003(\0132-.k8s.io.apimachiner" +
      "y.pkg.runtime.RawExtension\"\250\001\n\022Conversio" +
      "nResponse\022\013\n\003uid\030\001 \001(\t\022G\n\020convertedObjec" +
      "ts\030\002 \003(\0132-.k8s.io.apimachinery.pkg.runti" +
      "me.RawExtension\022<\n\006result\030\003 \001(\0132,.k8s.io" +
      ".apimachinery.pkg.apis.meta.v1.Status\"\332\001" +
      "\n\020ConversionReview\022a\n\007request\030\001 \001(\0132P.k8" +
      "s.io.apiextensions_apiserver.pkg.apis.ap" +
      "iextensions.v1beta1.ConversionRequest\022c\n" +
      "\010response\030\002 \001(\0132Q.k8s.io.apiextensions_a" +
      "piserver.pkg.apis.apiextensions.v1beta1." +
      "ConversionResponse\"\205\001\n\036CustomResourceCol" +
      "umnDefinition\022\014\n\004name\030\001 \001(\t\022\014\n\004type\030\002 \001(" +
      "\t\022\016\n\006format\030\003 \001(\t\022\023\n\013description\030\004 \001(\t\022\020" +
      "\n\010priority\030\005 \001(\005\022\020\n\010JSONPath\030\006 \001(\t\"\277\001\n\030C" +
      "ustomResourceConversion\022\020\n\010strategy\030\001 \001(" +
      "\t\022o\n\023webhookClientConfig\030\002 \001(\0132R.k8s.io." +
      "apiextensions_apiserver.pkg.apis.apiexte" +
      "nsions.v1beta1.WebhookClientConfig\022 \n\030co" +
      "nversionReviewVersions\030\003 \003(\t\"\270\002\n\030CustomR" +
      "esourceDefinition\022B\n\010metadata\030\001 \001(\01320.k8" +
      "s.io.apimachinery.pkg.apis.meta.v1.Objec" +
      "tMeta\022i\n\004spec\030\002 \001(\0132[.k8s.io.apiextensio" +
      "ns_apiserver.pkg.apis.apiextensions.v1be" +
      "ta1.CustomResourceDefinitionSpec\022m\n\006stat" +
      "us\030\003 \001(\0132].k8s.io.apiextensions_apiserve" +
      "r.pkg.apis.apiextensions.v1beta1.CustomR" +
      "esourceDefinitionStatus\"\252\001\n!CustomResour" +
      "ceDefinitionCondition\022\014\n\004type\030\001 \001(\t\022\016\n\006s" +
      "tatus\030\002 \001(\t\022F\n\022lastTransitionTime\030\003 \001(\0132" +
      "*.k8s.io.apimachinery.pkg.apis.meta.v1.T" +
      "ime\022\016\n\006reason\030\004 \001(\t\022\017\n\007message\030\005 \001(\t\"\310\001\n" +
      "\034CustomResourceDefinitionList\022@\n\010metadat" +
      "a\030\001 \001(\0132..k8s.io.apimachinery.pkg.apis.m" +
      "eta.v1.ListMeta\022f\n\005items\030\002 \003(\0132W.k8s.io." +
      "apiextensions_apiserver.pkg.apis.apiexte" +
      "nsions.v1beta1.CustomResourceDefinition\"" +
      "\211\001\n\035CustomResourceDefinitionNames\022\016\n\006plu" +
      "ral\030\001 \001(\t\022\020\n\010singular\030\002 \001(\t\022\022\n\nshortName" +
      "s\030\003 \003(\t\022\014\n\004kind\030\004 \001(\t\022\020\n\010listKind\030\005 \001(\t\022" +
      "\022\n\ncategories\030\006 \003(\t\"\201\007\n\034CustomResourceDe" +
      "finitionSpec\022\r\n\005group\030\001 \001(\t\022\017\n\007version\030\002" +
      " \001(\t\022k\n\005names\030\003 \001(\0132\\.k8s.io.apiextensio" +
      "ns_apiserver.pkg.apis.apiextensions.v1be" +
      "ta1.CustomResourceDefinitionNames\022\r\n\005sco" +
      "pe\030\004 \001(\t\022k\n\nvalidation\030\005 \001(\0132W.k8s.io.ap" +
      "iextensions_apiserver.pkg.apis.apiextens" +
      "ions.v1beta1.CustomResourceValidation\022o\n" +
      "\014subresources\030\006 \001(\0132Y.k8s.io.apiextensio" +
      "ns_apiserver.pkg.apis.apiextensions.v1be" +
      "ta1.CustomResourceSubresources\022p\n\010versio" +
      "ns\030\007 \003(\0132^.k8s.io.apiextensions_apiserve" +
      "r.pkg.apis.apiextensions.v1beta1.CustomR" +
      "esourceDefinitionVersion\022\177\n\030additionalPr" +
      "interColumns\030\010 \003(\0132].k8s.io.apiextension" +
      "s_apiserver.pkg.apis.apiextensions.v1bet" +
      "a1.CustomResourceColumnDefinition\022h\n\020sel" +
      "ectableFields\030\013 \003(\0132N.k8s.io.apiextensio" +
      "ns_apiserver.pkg.apis.apiextensions.v1be" +
      "ta1.SelectableField\022k\n\nconversion\030\t \001(\0132" +
      "W.k8s.io.apiextensions_apiserver.pkg.api" +
      "s.apiextensions.v1beta1.CustomResourceCo" +
      "nversion\022\035\n\025preserveUnknownFields\030\n \001(\010\"" +
      "\243\002\n\036CustomResourceDefinitionStatus\022t\n\nco" +
      "nditions\030\001 \003(\0132`.k8s.io.apiextensions_ap" +
      "iserver.pkg.apis.apiextensions.v1beta1.C" +
      "ustomResourceDefinitionCondition\022s\n\racce" +
      "ptedNames\030\002 \001(\0132\\.k8s.io.apiextensions_a" +
      "piserver.pkg.apis.apiextensions.v1beta1." +
      "CustomResourceDefinitionNames\022\026\n\016storedV" +
      "ersions\030\003 \003(\t\"\305\004\n\037CustomResourceDefiniti" +
      "onVersion\022\014\n\004name\030\001 \001(\t\022\016\n\006served\030\002 \001(\010\022" +
      "\017\n\007storage\030\003 \001(\010\022\022\n\ndeprecated\030\007 \001(\010\022\032\n\022" +
      "deprecationWarning\030\010 \001(\t\022g\n\006schema\030\004 \001(\013" +
      "2W.k8s.io.apiextensions_apiserver.pkg.ap" +
      "is.apiextensions.v1beta1.CustomResourceV" +
      "alidation\022o\n\014subresources\030\005 \001(\0132Y.k8s.io" +
      ".apiextensions_apiserver.pkg.apis.apiext" +
      "ensions.v1beta1.CustomResourceSubresourc" +
      "es\022\177\n\030additionalPrinterColumns\030\006 \003(\0132].k" +
      "8s.io.apiextensions_apiserver.pkg.apis.a" +
      "piextensions.v1beta1.CustomResourceColum" +
      "nDefinition\022h\n\020selectableFields\030\t \003(\0132N." +
      "k8s.io.apiextensions_apiserver.pkg.apis." +
      "apiextensions.v1beta1.SelectableField\"q\n" +
      "\036CustomResourceSubresourceScale\022\030\n\020specR" +
      "eplicasPath\030\001 \001(\t\022\032\n\022statusReplicasPath\030" +
      "\002 \001(\t\022\031\n\021labelSelectorPath\030\003 \001(\t\"!\n\037Cust" +
      "omResourceSubresourceStatus\"\372\001\n\032CustomRe" +
      "sourceSubresources\022n\n\006status\030\001 \001(\0132^.k8s" +
      ".io.apiextensions_apiserver.pkg.apis.api" +
      "extensions.v1beta1.CustomResourceSubreso" +
      "urceStatus\022l\n\005scale\030\002 \001(\0132].k8s.io.apiex" +
      "tensions_apiserver.pkg.apis.apiextension" +
      "s.v1beta1.CustomResourceSubresourceScale" +
      "\"\203\001\n\030CustomResourceValidation\022g\n\017openAPI" +
      "V3Schema\030\001 \001(\0132N.k8s.io.apiextensions_ap" +
      "iserver.pkg.apis.apiextensions.v1beta1.J" +
      "SONSchemaProps\"9\n\025ExternalDocumentation\022" +
      "\023\n\013description\030\001 \001(\t\022\013\n\003url\030\002 \001(\t\"\023\n\004JSO" +
      "N\022\013\n\003raw\030\001 \001(\014\"\231\026\n\017JSONSchemaProps\022\n\n\002id" +
      "\030\001 \001(\t\022\016\n\006schema\030\002 \001(\t\022\013\n\003ref\030\003 \001(\t\022\023\n\013d" +
      "escription\030\004 \001(\t\022\014\n\004type\030\005 \001(\t\022\016\n\006format" +
      "\030\006 \001(\t\022\r\n\005title\030\007 \001(\t\022T\n\007default\030\010 \001(\0132C" +
      ".k8s.io.apiextensions_apiserver.pkg.apis" +
      ".apiextensions.v1beta1.JSON\022\017\n\007maximum\030\t" +
      " \001(\001\022\030\n\020exclusiveMaximum\030\n \001(\010\022\017\n\007minimu" +
      "m\030\013 \001(\001\022\030\n\020exclusiveMinimum\030\014 \001(\010\022\021\n\tmax" +
      "Length\030\r \001(\003\022\021\n\tminLength\030\016 \001(\003\022\017\n\007patte" +
      "rn\030\017 \001(\t\022\020\n\010maxItems\030\020 \001(\003\022\020\n\010minItems\030\021" +
      " \001(\003\022\023\n\013uniqueItems\030\022 \001(\010\022\022\n\nmultipleOf\030" +
      "\023 \001(\001\022Q\n\004enum\030\024 \003(\0132C.k8s.io.apiextensio" +
      "ns_apiserver.pkg.apis.apiextensions.v1be" +
      "ta1.JSON\022\025\n\rmaxProperties\030\025 \001(\003\022\025\n\rminPr" +
      "operties\030\026 \001(\003\022\020\n\010required\030\027 \003(\t\022d\n\005item" +
      "s\030\030 \001(\0132U.k8s.io.apiextensions_apiserver" +
      ".pkg.apis.apiextensions.v1beta1.JSONSche" +
      "maPropsOrArray\022]\n\005allOf\030\031 \003(\0132N.k8s.io.a" +
      "piextensions_apiserver.pkg.apis.apiexten" +
      "sions.v1beta1.JSONSchemaProps\022]\n\005oneOf\030\032" +
      " \003(\0132N.k8s.io.apiextensions_apiserver.pk" +
      "g.apis.apiextensions.v1beta1.JSONSchemaP" +
      "rops\022]\n\005anyOf\030\033 \003(\0132N.k8s.io.apiextensio" +
      "ns_apiserver.pkg.apis.apiextensions.v1be" +
      "ta1.JSONSchemaProps\022[\n\003not\030\034 \001(\0132N.k8s.i" +
      "o.apiextensions_apiserver.pkg.apis.apiex" +
      "tensions.v1beta1.JSONSchemaProps\022r\n\nprop" +
      "erties\030\035 \003(\0132^.k8s.io.apiextensions_apis" +
      "erver.pkg.apis.apiextensions.v1beta1.JSO" +
      "NSchemaProps.PropertiesEntry\022r\n\024addition" +
      "alProperties\030\036 \001(\0132T.k8s.io.apiextension" +
      "s_apiserver.pkg.apis.apiextensions.v1bet" +
      "a1.JSONSchemaPropsOrBool\022\200\001\n\021patternProp" +
      "erties\030\037 \003(\0132e.k8s.io.apiextensions_apis" +
      "erver.pkg.apis.apiextensions.v1beta1.JSO" +
      "NSchemaProps.PatternPropertiesEntry\022v\n\014d" +
      "ependencies\030  \003(\0132`.k8s.io.apiextensions" +
      "_apiserver.pkg.apis.apiextensions.v1beta" +
      "1.JSONSchemaProps.DependenciesEntry\022m\n\017a" +
      "dditionalItems\030! \001(\0132T.k8s.io.apiextensi" +
      "ons_apiserver.pkg.apis.apiextensions.v1b" +
      "eta1.JSONSchemaPropsOrBool\022t\n\013definition" +
      "s\030\" \003(\0132_.k8s.io.apiextensions_apiserver" +
      ".pkg.apis.apiextensions.v1beta1.JSONSche" +
      "maProps.DefinitionsEntry\022j\n\014externalDocs" +
      "\030# \001(\0132T.k8s.io.apiextensions_apiserver." +
      "pkg.apis.apiextensions.v1beta1.ExternalD" +
      "ocumentation\022T\n\007example\030$ \001(\0132C.k8s.io.a" +
      "piextensions_apiserver.pkg.apis.apiexten" +
      "sions.v1beta1.JSON\022\020\n\010nullable\030% \001(\010\022(\n " +
      "xKubernetesPreserveUnknownFields\030& \001(\010\022#" +
      "\n\033xKubernetesEmbeddedResource\030\' \001(\010\022\036\n\026x" +
      "KubernetesIntOrString\030( \001(\010\022\036\n\026xKubernet" +
      "esListMapKeys\030) \003(\t\022\033\n\023xKubernetesListTy" +
      "pe\030* \001(\t\022\032\n\022xKubernetesMapType\030+ \001(\t\022m\n\026" +
      "xKubernetesValidations\030, \003(\0132M.k8s.io.ap" +
      "iextensions_apiserver.pkg.apis.apiextens" +
      "ions.v1beta1.ValidationRule\032\201\001\n\017Properti" +
      "esEntry\022\013\n\003key\030\001 \001(\t\022]\n\005value\030\002 \001(\0132N.k8" +
      "s.io.apiextensions_apiserver.pkg.apis.ap" +
      "iextensions.v1beta1.JSONSchemaProps:\0028\001\032" +
      "\210\001\n\026PatternPropertiesEntry\022\013\n\003key\030\001 \001(\t\022" +
      "]\n\005value\030\002 \001(\0132N.k8s.io.apiextensions_ap" +
      "iserver.pkg.apis.apiextensions.v1beta1.J" +
      "SONSchemaProps:\0028\001\032\220\001\n\021DependenciesEntry" +
      "\022\013\n\003key\030\001 \001(\t\022j\n\005value\030\002 \001(\0132[.k8s.io.ap" +
      "iextensions_apiserver.pkg.apis.apiextens" +
      "ions.v1beta1.JSONSchemaPropsOrStringArra" +
      "y:\0028\001\032\202\001\n\020DefinitionsEntry\022\013\n\003key\030\001 \001(\t\022" +
      "]\n\005value\030\002 \001(\0132N.k8s.io.apiextensions_ap" +
      "iserver.pkg.apis.apiextensions.v1beta1.J" +
      "SONSchemaProps:\0028\001\"\335\001\n\026JSONSchemaPropsOr" +
      "Array\022^\n\006schema\030\001 \001(\0132N.k8s.io.apiextens" +
      "ions_apiserver.pkg.apis.apiextensions.v1" +
      "beta1.JSONSchemaProps\022c\n\013jSONSchemas\030\002 \003" +
      "(\0132N.k8s.io.apiextensions_apiserver.pkg." +
      "apis.apiextensions.v1beta1.JSONSchemaPro" +
      "ps\"\207\001\n\025JSONSchemaPropsOrBool\022\016\n\006allows\030\001" +
      " \001(\010\022^\n\006schema\030\002 \001(\0132N.k8s.io.apiextensi" +
      "ons_apiserver.pkg.apis.apiextensions.v1b" +
      "eta1.JSONSchemaProps\"\220\001\n\034JSONSchemaProps" +
      "OrStringArray\022^\n\006schema\030\001 \001(\0132N.k8s.io.a" +
      "piextensions_apiserver.pkg.apis.apiexten" +
      "sions.v1beta1.JSONSchemaProps\022\020\n\010propert" +
      "y\030\002 \003(\t\"#\n\017SelectableField\022\020\n\010jsonPath\030\001" +
      " \001(\t\"O\n\020ServiceReference\022\021\n\tnamespace\030\001 " +
      "\001(\t\022\014\n\004name\030\002 \001(\t\022\014\n\004path\030\003 \001(\t\022\014\n\004port\030" +
      "\004 \001(\005\"\206\001\n\016ValidationRule\022\014\n\004rule\030\001 \001(\t\022\017" +
      "\n\007message\030\002 \001(\t\022\031\n\021messageExpression\030\003 \001" +
      "(\t\022\016\n\006reason\030\004 \001(\t\022\021\n\tfieldPath\030\005 \001(\t\022\027\n" +
      "\017optionalOldSelf\030\006 \001(\010\"\226\001\n\023WebhookClient" +
      "Config\022\013\n\003url\030\003 \001(\t\022`\n\007service\030\001 \001(\0132O.k" +
      "8s.io.apiextensions_apiserver.pkg.apis.a" +
      "piextensions.v1beta1.ServiceReference\022\020\n" +
      "\010caBundle\030\002 \001(\014Bq\n\032io.kubernetes.client." +
      "protoB\024V1beta1ApiextensionsZ=k8s.io/apie" +
      "xtensions-apiserver/pkg/apis/apiextensio" +
      "ns/v1beta1"
    };
    descriptor = 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(),
        });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionRequest_descriptor,
        new java.lang.String[] { "Uid", "DesiredAPIVersion", "Objects", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionResponse_descriptor,
        new java.lang.String[] { "Uid", "ConvertedObjects", "Result", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ConversionReview_descriptor,
        new java.lang.String[] { "Request", "Response", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceColumnDefinition_descriptor,
        new java.lang.String[] { "Name", "Type", "Format", "Description", "Priority", "JSONPath", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceConversion_descriptor,
        new java.lang.String[] { "Strategy", "WebhookClientConfig", "ConversionReviewVersions", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinition_descriptor,
        new java.lang.String[] { "Metadata", "Spec", "Status", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionCondition_descriptor,
        new java.lang.String[] { "Type", "Status", "LastTransitionTime", "Reason", "Message", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionList_descriptor,
        new java.lang.String[] { "Metadata", "Items", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionNames_descriptor,
        new java.lang.String[] { "Plural", "Singular", "ShortNames", "Kind", "ListKind", "Categories", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionSpec_descriptor,
        new java.lang.String[] { "Group", "Version", "Names", "Scope", "Validation", "Subresources", "Versions", "AdditionalPrinterColumns", "SelectableFields", "Conversion", "PreserveUnknownFields", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionStatus_descriptor,
        new java.lang.String[] { "Conditions", "AcceptedNames", "StoredVersions", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceDefinitionVersion_descriptor,
        new java.lang.String[] { "Name", "Served", "Storage", "Deprecated", "DeprecationWarning", "Schema", "Subresources", "AdditionalPrinterColumns", "SelectableFields", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceScale_descriptor,
        new java.lang.String[] { "SpecReplicasPath", "StatusReplicasPath", "LabelSelectorPath", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresourceStatus_descriptor,
        new java.lang.String[] { });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceSubresources_descriptor,
        new java.lang.String[] { "Status", "Scale", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_CustomResourceValidation_descriptor,
        new java.lang.String[] { "OpenAPIV3Schema", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ExternalDocumentation_descriptor,
        new java.lang.String[] { "Description", "Url", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSON_descriptor,
        new java.lang.String[] { "Raw", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor,
        new java.lang.String[] { "Id", "Schema", "Ref", "Description", "Type", "Format", "Title", "Default", "Maximum", "ExclusiveMaximum", "Minimum", "ExclusiveMinimum", "MaxLength", "MinLength", "Pattern", "MaxItems", "MinItems", "UniqueItems", "MultipleOf", "Enum", "MaxProperties", "MinProperties", "Required", "Items", "AllOf", "OneOf", "AnyOf", "Not", "Properties", "AdditionalProperties", "PatternProperties", "Dependencies", "AdditionalItems", "Definitions", "ExternalDocs", "Example", "Nullable", "XKubernetesPreserveUnknownFields", "XKubernetesEmbeddedResource", "XKubernetesIntOrString", "XKubernetesListMapKeys", "XKubernetesListType", "XKubernetesMapType", "XKubernetesValidations", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PropertiesEntry_descriptor =
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor.getNestedTypes().get(0);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PropertiesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PropertiesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PatternPropertiesEntry_descriptor =
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor.getNestedTypes().get(1);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PatternPropertiesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_PatternPropertiesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DependenciesEntry_descriptor =
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor.getNestedTypes().get(2);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DependenciesEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DependenciesEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DefinitionsEntry_descriptor =
      internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_descriptor.getNestedTypes().get(3);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DefinitionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaProps_DefinitionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrArray_descriptor,
        new java.lang.String[] { "Schema", "JSONSchemas", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrBool_descriptor,
        new java.lang.String[] { "Allows", "Schema", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_JSONSchemaPropsOrStringArray_descriptor,
        new java.lang.String[] { "Schema", "Property", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_SelectableField_descriptor,
        new java.lang.String[] { "JsonPath", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ServiceReference_descriptor,
        new java.lang.String[] { "Namespace", "Name", "Path", "Port", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_ValidationRule_descriptor,
        new java.lang.String[] { "Rule", "Message", "MessageExpression", "Reason", "FieldPath", "OptionalOldSelf", });
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_k8s_io_apiextensions_apiserver_pkg_apis_apiextensions_v1beta1_WebhookClientConfig_descriptor,
        new java.lang.String[] { "Url", "Service", "CaBundle", });
    descriptor.resolveAllFeaturesImmutable();
    io.kubernetes.client.proto.Meta.getDescriptor();
    io.kubernetes.client.proto.Runtime.getDescriptor();
    io.kubernetes.client.proto.RuntimeSchema.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
